Powershell是否有自动日志,还是我必须将日志功能写​​入我的脚本?

时间:2015-07-08 06:43:13

标签: powershell

我主要为SPSS,STATA和SAS等统计软件编写语法,而且我在PowerShell中编写代码相当新。我习惯于能够扫描日志文件以找出我的脚本所做的事情,例如将哪些值分配给变量或循环的哪个迭代正在运行。

但是当我运行PowerShell脚本(使用PowerShell ISE)时,除非脚本中出现致命错误,否则我根本不会收到任何消息。我没有错误,但脚本没有执行rigth操作,所以我知道某处有错误。当我逐句地将代码写入控制台时,我得到输出告诉我发生了什么,但是一旦我运行enitre脚本,就没有输出来跟踪。有没有办法从脚本中查看日志,还是我必须隐式地将日志函数写入脚本?从我的谷歌搜索,似乎是这种情况,但我不想花几个小时写日志代码只是为了找到我可以只有openede x文件夹,找到我在找什么

3 个答案:

答案 0 :(得分:3)

除了@ Vesper的回复之外,您还可以使用start-transcript cmdlet记录每个命令和对日志文件的响应。 即

start-transcript -path c:\logs\logfile.txt

set-psdebug也可能是一个很好的帮助

答案 1 :(得分:1)

start-transcript主要基于录制屏幕输出(Write-Host),这通常在涉及具有意外内容的变量时会产生疑问。此外,脚本日志记录中没有时间戳和其他功能 因此我写了自己的Log-Entry framework

答案 2 :(得分:0)

您可以使用p:empty { display: none; } Write-VerboseWrite-Debug生成日志,然后将相应的首选项变量设置为“continue”并运行添加了参数Write-Warning的脚本,其中警告的数量为3,详细的数量为4,调试消息的数量为5。这适用于Powershell 3.0及更高版本。

对于Powershell 2.0,您可以将3>file.log作为日志转储程序并将脚本输出转发到文件中。

如果两者都不满足,您可以在脚本中打开一个日志文件,并通过管道将所有要记录的字符串转发到Write-Default