我如何从我的Powershellscript获取日志文件

时间:2018-01-17 12:03:58

标签: powershell

我想将我的Powershell脚本的所有输入和输出记录到日志文件中。我尝试过一个函数,但是我必须在每行编写函数。我用Start-transcript测试它,我不知道,但我认为它仅适用于错误,它不能很好地工作。 有可能,如果我开始我的脚本来获取Log all lines?

例如:

$u=rene
New-AdUser -Name $u ...
Write-Hoste "New User ist Create $u"

并在我的日志文件中应该有:

17.01.2018 13:00 $u=rene
17.01.2018 13:00 New-AdUser -Name $u ...
17.01.2018 13:00 Write-Hoste "New User ist Create $u"

......以及其他所有内容(例如错误)

1 个答案:

答案 0 :(得分:1)

如果你想记录整个脚本,那么你可以做这样的事情

{
  "action": Object {
    "params": Object {},
    "routeName": "ScreenB",
    "type": "Navigation/NAVIGATE",
  },
  "params": Object {},
  "routeName": "AllScreens_StackNavigator",
  "type": "Navigation/NAVIGATE",
}

这是一种做法。另一种方法是在脚本开头使用@( $u=rene New-AdUser -Name $u ... Write-Hoste "New User ist Create $u" ... Rest of your script ) | Out-file -FilePath \\PathToYourLogFile\Logfile.txt" 并使用Start-Transcript cmdlet结束脚本并将输出重定向到文本文件。有关详细信息,请参阅start-transcriptstop-transcript

我找到了一个示例,它将为您的脚本创建每日日志(如果您每天多次运行它,它只会附加到您拥有的内容)。该日志将与您的脚本位于同一文件夹中,并且它将清除超过15天的任何日志。

Stop-Transcript

然后在脚本结束时,只需添加

$VerbosePreference = "Continue"
$LogPath = Split-Path $MyInvocation.MyCommand.Path
Get-ChildItem "$LogPath\*.log" | Where LastWriteTime -LT (Get-Date).AddDays(-15) | Remove-Item -Confirm:$false
$LogPathName = Join-Path -Path $LogPath -ChildPath "$($MyInvocation.MyCommand.Name)-$(Get-Date -Format 'MM-dd-yyyy').log"
Start-Transcript $LogPathName -Append

Here是相同的链接。 如果要记录特定内容,则可以在特定和所需位置使用Stop-Transcript cmdlet。希望有所帮助!