Я пишу функцию для сбора информации WMI с разных компьютеров. первое, что я делаю, это проверить, могу ли я получить доступ к текущему компьютеру, а если нет, то пишу-ошибку и продолжить. Мой вопрос: как я могу записать ошибки на экран , а затем результаты успешных звонков? (сокращенный код :)Ошибки перед записью в PowerShell
Function Get-Info
{
Param([Parameter(ValueFromPipeline=$true)]
[string[]] $computerName = ".")
Process
{
foreach ($Computer in $ComputerName)
{
if (-Not $(test-connection $computer -Count 2 -ErrorAction SilentlyContinue))
{
Write-Error "Unable to access $computer"
continue
}
$Info = get-WMIObject -Class <someClass> -ComputerName $Computer
$result = New-Object PSObject -Property @{
Prop1 = $Info.Property
<# ... #> }
Write-Output $Result
}
}
}
Когда я запрашиваю коллекцию систем, я получаю info, <error>, info, <error>
и не <error>,<error>,info...
чего я хочу.
Любая помощь была бы принята с благодарностью.
Чтобы уточнить: вы хотите, чтобы все ошибки печатались до всех успешных результатов? – arco444
Не могли бы вы захватить результаты в массиве '$ results + = $ result' вне цикла foreach' Write-Output $ Results'? – Matt
Обратите внимание, что 'Write-Error' и' Write-Output' записываются в разные потоки. Сообщения печатаются последовательно для любого отдельного потока, но нет гарантированного порядка в разных потоках. –