我主要为SPSS,STATA和SAS等统计软件编写语法,而且我在PowerShell中编写代码相当新。我习惯于能够扫描日志文件以找出我的脚本所做的事情,例如将哪些值分配给变量或循环的哪个迭代正在运行。
但是当我运行PowerShell脚本(使用PowerShell ISE)时,除非脚本中出现致命错误,否则我根本不会收到任何消息。我没有错误,但脚本没有执行rigth操作,所以我知道某处有错误。当我逐句地将代码写入控制台时,我得到输出告诉我发生了什么,但是一旦我运行enitre脚本,就没有输出来跟踪。有没有办法从脚本中查看日志,还是我必须隐式地将日志函数写入脚本?从我的谷歌搜索,似乎是这种情况,但我不想花几个小时写日志代码只是为了找到我可以只有openede x文件夹,找到我在找什么
答案 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-Verbose
或Write-Debug
生成日志,然后将相应的首选项变量设置为“continue”并运行添加了参数Write-Warning
的脚本,其中警告的数量为3,详细的数量为4,调试消息的数量为5。这适用于Powershell 3.0及更高版本。
对于Powershell 2.0,您可以将3>file.log
作为日志转储程序并将脚本输出转发到文件中。
如果两者都不满足,您可以在脚本中打开一个日志文件,并通过管道将所有要记录的字符串转发到Write-Default
。