Сообщите, пожалуйста, любое понимание того, что мне нужно сделать, чтобы переменная прошла успешно. у меня более 100 серверов, так что это может занять больше времени, чем можно было бы подумать. например, 1-6 секунд на сервер
Write-Host "Confirm correct OS is installed" -ForegroundColor Yellow -BackgroundColor Black
$FQDNs | ForEach-Object {
Invoke-Command -ComputerName $_ -Credential $Credentials -ScriptBlock {
$OS = (Get-CimInstance -ClassName CIM_OperatingSystem).Caption
Write-Host "$Using:_`: $OS" -ForegroundColor Green -BackgroundColor Black
Write-Output "$Using:_`: $OS"
}
}
}
, если я добавлю параметр -Parallel, он немедленно выйдет из строя с ошибкой ниже. Как еще я должен передать переменную, если автоматическая c переменная - это единственный способ, которым я вижу, что объект foreach передает их? (Я надеюсь, что это не так)
ForEach-Object: C:\Scripts\Checklist.ps1:53
Line |
53 | $FQDNs | ForEach-Object -Parallel {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
| The value of the using variable '$using:_' cannot be retrieved because
| it has not been set in the local session.
Вот сценарий со вставленным параметром Parallel, чтобы показать, где именно я это делаю
Write-Host "Confirm correct OS is installed" -ForegroundColor Yellow -BackgroundColor Black
$FQDNs | ForEach-Object -Parallel {
Invoke-Command -ComputerName $_ -Credential $Credentials -ScriptBlock {
$OS = (Get-CimInstance -ClassName CIM_OperatingSystem).Caption
Write-Host "$Using:_`: $OS" -ForegroundColor Green -BackgroundColor Black
Write-Output "$Using:_`: $OS"
}
}
}