start-Transcript没有捕获所有输出到日志文件..?

lar*_*400 19 powershell powershell-2.0

我有以下代码通过并获取计划任务信息并将屏幕上发生的输出放到日志文件中.

但是,我注意到的是,除了"访问被拒绝"的服务器之外,所有错误都会被记录 - 如何在日志文件中记录这些错误.

以下是代码:

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
Run Code Online (Sandbox Code Playgroud)

这是屏幕上的输出:

> 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.
Run Code Online (Sandbox Code Playgroud)

这是LOG文件中的输出....没有访问被拒绝显示...?

> 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
Run Code Online (Sandbox Code Playgroud)

dug*_*gas 15

连接错误315857中报告了本机命令输出未记录在Start-Transcript输出中但输出到控制台的此行为.请参阅解决方案以获取可能的解决方

  • 现在链接被打破,并与它所有的变通方法:-( (9认同)
  • [Resurrected link](http://web.archive.org/web/20130608164153/http://connect.microsoft.com/PowerShell/feedback/details/315875/unable-to-capture-all-session-output-into -a-成绩单) (7认同)
  • GitHub 问题 [10994](https://github.com/PowerShell/PowerShell/issues/10994) (2认同)

小智 11

最简单的解决方法是将本机命令的结果传递给 Out-Host

schtasks.exe /query /S $name /fo CSV /v >$scheduledpath\$name.csv | Out-Host
Run Code Online (Sandbox Code Playgroud)