我的代码已经在多个 PowerShell 会话、多台机器等中进行了广泛测试,所有这些都完全符合我的预期。
switch ($e.Data.Type) `
{
{$_ -in [Policy.Reg]::SZ, [Policy.Reg]::EXPAND_SZ} `
{
$e.Data[$e.Data.Type] = ([string]$e.Data[$e.Data.Type]) -replace "{PC}", "$PC"
}
{$_ -in [Policy.Reg]::MULTI_SZ} `
{
$e.Data[$e.Data.Type] = [string[]]($e.Data[$e.Data.Type] | % { $_ -replace "{PC}", "$PC" })
}
}
[Policy.Reg]
是一个枚举,它$e.Data.Type
是该枚举的变量
从 ISE 或 Powershell 命令行代码运行代码每次都有效。
当我将其添加为 RunPowerShell 任务序列步骤(MDT 2012/2013 和 SCCM 2012 都已尝试)时,任务序列失败并显示
you must provide a value expression on the right-hand side of the '-' operator. [Policy.Reg]::SZ, [Policy.Reg]::EXPAND_SZ
当 TaskSequence 运行 Powershell 脚本时,我完全不知道发生了什么,这使得它与我手动执行某些代码时不同。