Пожалуйста, ознакомьтесь с последним кодом, который сейчас работает, больше нет необходимости в каких-либо командлетах Invoke:
$ClassificationList = $null
$classifications = $null
$ClassificationList = $ConfigFile.Settings.Project.Classifications
If ( $ClassificationList )
{
$ClassificationList = $ClassificationList -replace ',','|'
$classifications = $wsus.GetUpdateClassifications() |
where title -match $ClassificationList
$updatescope.Classifications.Clear()
$updatescope.Classifications.AddRange($classifications)
}
Оригинальный вопрос:
Этот вопрос был сжат, чтобы избежать путаницы.
При выполнении приведенного ниже кода:
$ScriptText =
@"
`$classifications = `$wsus.GetUpdateClassifications() |
? {
$_.Title -eq 'Critical Updates' `
-OR `
$_.Title -eq 'Security Updates' `
-OR `
$_.Title -eq 'Definition Updates'
}
"@
$scriptBlock = [Scriptblock]::Create($ScriptText)
Invoke-Command -ScriptBlock {$scriptBlock}
Write-Host $classifications
Переменная $ классификации не заполняется, но выполняетсякод без упаковки в блок скрипта работает нормально. Я пытаюсь прочитать из файла конфигурации все классификации, которые я хочу найти в WSUS, и динамически добавить их в приведенный выше сценарий, но выполнение этого сценария при его создании не работает, хотя никаких ошибок не выдается.