将所有Write-Output传输到PowerShell中的同一Out-File

时间:2014-07-17 09:40:04

标签: powershell powershell-v2.0

正如标题所示,你是如何做到这一点的所有写输出 - 无论它们出现在哪里 - 自动附加到你定义的日志文件?这样,脚本的阅读效果会更好,并且会删除一些工作!

下面的小例子,如果可能的话,我想看看没有“| Out-File”,但仍然让它们输出到那个文件!

$Author = 'Max'
$Time = Get-Date -Format "HH:mm:ss.fff"
$Title = "Illegal Software Removal"
$LogName = "Illegal_Remove_$($env:COMPUTERNAME).log"
$Log = "C:\Windows\Logs\Software" + "\" + $LogName
$RemoteLog = "\\Server\Adobe Illegal Software Removal"

Set-PSBreakpoint -Variable Time -Mode Read -Action { $global:Time = Get-Date -format "HH:mm:ss.fff" } | Out-Null

If((Test-Path $Log) -eq $False){ New-Item $Log -ItemType "File" -Force | Out-Null }
                      Else { $Null }

"[$Time][Startup] $Title : Created by $Author" | Out-File $Log -Append
"[$Time][Startup] Configuring initial variables required before run..." | Out-File $Log -Append

编辑:这需要在PS v2.0上运行,我不希望输出只显示在日志中的屏幕上。所以我有相同的功能,但脚本看起来像......

"[$Time][Startup] $Title : Created by $Author" 
"[$Time][Startup] Configuring initial variables required before run..." 

1 个答案:

答案 0 :(得分:3)

您有两个选项,一个是在调用脚本时执行重定向,例如:

PowerShell.exe -Command "& {c:\myscript.ps1}" > c:\myscript.log

或者您可以使用Start-Transcript命令记录shell看到的所有内容(exe输出除外)。脚本完成后,请致电Stop-Transcript