快速将日志记录添加到现有的PowerShell脚本集

时间:2017-08-03 23:53:05

标签: powershell logging

我收集了一些powershell脚本,其中一些称为其他脚本。其中一些下标也可以根据需要自行调用。如何快速向所有脚本添加日志记录,以便任何脚本调用都会生成日志文件以供以后检查?

有许多问题涉及日志记录,并提供了一些很好的答案,like this one。但我想知道我们能想出什么:

  • 需要对现有powershell文件进行最小程度的处理
  • 自动处理脚本A.ps1调用脚本B.ps1。如果你打电话 A.ps1,A.ps1需要启动并完成日志记录。但是如果你打电话给B.ps1 直接,B.ps1。

我在下面提出了我的答案,并希望分享,看看是否有其他想法如何处理这个问题,或者建议改进我的答案。

1 个答案:

答案 0 :(得分:2)

我编写的支持代码(进一步向下)允许只为每个ps1文件添加以下内容。无论是在顶级还是由另一个脚本调用脚本,它都会自动为我提供日志记录:

x

支持此功能的代码位于ps_support.ps1中,位于我需要记录的powershell文件集合旁边。它使用Get-Variable和Set-Variable来处理调用者范围级别的几个变量:

  • ; al has some unsigned value mov dl, al sar dl, 7 and dl, [signedByte] imul BYTE [signedByte] add ah, dl 是正常的,因此子范围可以看到 记录已经发生,而不是再次尝试启动它。
  • #any params for script . "$PSScriptRoot\ps_support.ps1" StartTranscriptIfAppropriate try { #all of the original script } finally { ConditionalStopTranscript } 是私有的,因此范围可以知道是否 它负责停止记录。

这是ps_support.ps1:

Logging__TranscriptStarted