У меня есть код, который был широко протестирован на нескольких сеансах PowerShell, на нескольких машинах и т. Д., Все делает именно то, что я ожидаю.Код PowerShell ведет себя по-разному под SCCM и MDT TaskSequences
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]
является Enum, что $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, который отличает его от того, когда я вручную выполняю код.
Звучит так, как будто переменная не разворачивается, вы можете попробовать повторно запустить свою задачу, но попробуйте написать файл, чтобы подтвердить правильность изменения ваших переменных. Я столкнулся с ситуацией, когда мне пришлось использовать '$ script = [ScriptBlock] :: Create (« Это расширяется, как ожидалось, на $ date »)' и передать '$ script' как' ScriptBlock' – user4317867
Что такое '[ Policy.Reg] '? Я не вижу документальной документации по этому имени и не знаю, что на моем компьютере работает WMF5. – alx9r
@ alx9r [Policy.Reg] - это пользовательское Enum, которое является частью пользовательской библиотеки C#, которая используется в модуле Binary Powershell. – TofuBug