【问题标题】:How can I log everything that is written in powershell window?如何记录在 powershell 窗口中写入的所有内容?
【发布时间】:2019-10-23 20:38:18
【问题描述】:

我需要为此脚本执行的每个操作创建一个日志文件。

我尝试使用重定向(>>),但无法将输出实际写入文件。

while($true){

$FromMC = Get-ChildItem -Path "\\x\From MC" -Filter *.mpg
Write-Host "Checking '\\x\From MC' for files" -ForegroundColor Cyan
Write-Host $FromMC.count"Files Found" -ForegroundColor Cyan
Write-Host ""
ForEach($file in $FromMC){

    try{
        Move-Item -Filter 7ST* -Path $file.Fullname -Destination "\\x\programs\7TH STREET THEATER" -Verbose -Force -ErrorAction Stop
    }
    catch{...}
Write-Host "Pausing for"$ts.Minutes"minutes..." -ForegroundColor Cyan
Write-Host "Ctrl+C to Stop"
Write-Host ""
Start-Sleep -Seconds $ts.TotalSeconds
}

我希望输出与 shell 中的“-verbose”输出完全相同。输出类型:Write-Host、Verbose、Write-Warning

我觉得解决方法非常简单,我只是忽略了它。

【问题讨论】:

  • Write-Host 不被重定向,它用于在控制台上与用户交互。请改用Write-Output(或者只是不分配返回值)。并且错误输出可以通过2>>重定向。
  • 看看powershell审计。这几乎得到了一切......并且在操作系统级别设置,而不是在任何特定脚本中。它是一组可以轻松控制的 GPO 设置。

标签: powershell logging warnings verbose


【解决方案1】:

要记录通常会写入控制台的所有内容,例如-verbose,您可以使用Start-Transcript,完成后使用Stop-Transcript

例子:

Start-Transcript -Path "C:\logs.txt"

#run code you want to capture

Stop-Transcript

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多