Ответ 1
Это поведение с выходом собственной команды, которое не записывается в выводе Start-Transcript, а выводится на консоль, сообщается в ошибке подключения 315857. См. Обходные пути для возможных решений.
У меня есть следующий код, который проходит и получает информацию о запланированных задачах и помещает вывод, который появляется на экране в файл журнала.
Тем не менее, я заметил, что все ошибки регистрируются в EXCEPT для серверов, которым "запрещен доступ" - как я могу регистрировать эти ошибки в файле журнала.
Ниже приведен код:
Start-Transcript -path $scheduledpath\logging.txt -append
foreach ($name in $names)
{
Write-Host "Running Against Server $name" -ForegroundColor Magenta
if ( Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue )
{
#$Command = "schtasks.exe /query /S $name /fo CSV /v >c:\tools\Scheduled\$name.csv"
$Command = "schtasks.exe /query /S $name /fo CSV /v >$scheduledpath\$name.csv"
Invoke-Expression $Command
Clear-Variable Command -ErrorAction SilentlyContinue
}
else{
Write-Host "$name is Down" -ForegroundColor Red
}
}
Stop-Transcript
Вот результат на экране:
> Running Against Server SV064909
> SV064909 is Down
> Running Against Server SV081372
> SV081372 is Down
> Running Against Server YBEF008690_vorher_SV064930
> YBEF008690_vorher_SV064930 is Down
> Running Against Server Alt_SV064921
> Alt_SV064921 is Down
> Running Against Server SV073632
> ERROR: Access is denied.
> Running Against Server SV073633
> ERROR: Access is denied.
Вот результат в файле LOG.... нет. ACCESS DENIED Показывается...?
> Running Against Server SV064909
> SV064909 is Down
> Running Against Server SV081372
> SV081372 is Down
> Running Against Server YBEF008690_vorher_SV064930
> YBEF008690_vorher_SV064930 is Down
> Running Against Server Alt_SV064921
> Alt_SV064921 is Down
> Running Against Server SV073632
> Running Against Server SV073633
Это поведение с выходом собственной команды, которое не записывается в выводе Start-Transcript, а выводится на консоль, сообщается в ошибке подключения 315857. См. Обходные пути для возможных решений.
Простейшим обходным решением является передача результатов команды native на Out-Host
schtasks.exe /query /S $name /fo CSV /v >$scheduledpath\$name.csv | Out-Host
Ahh, правильный ответ должен быть:
$Command = "schtasks.exe/query/S $name/fo CSV/v 2 > & 1 > $schedulepath\$name.csv"
т.е. pipe stderror (труба 2) в stdout (труба 1), так что оба показывают в выводе.
Ничто из этого не помогло мне. Я нашел ссылку с 2009 года с обсуждением проблемы. Но блог microsoft с 2010 года решил проблему для меня.
Короче говоря, выведите исходный вывод команды на Out-Default.
schtasks.exe /query /S $name /fo CSV /v | Out-Default
{Я действительно не пробовал эту линию, но вы поняли.}
$servicetag = Get-WmiObject win32_bios | Select-Object -ExpandProperty SerialNumber
Write-output $servicetag
Я использовал Write-output в одной строке в верхней части моего script, после этого они все были Писателями. Но каждый вывод "Write" теперь отображается в моем script.