我在Powershell 4.0中有以下行,它接受一个日志文件并导致错误(或可能是异常?):
copy-item C:\Source\PSLog.txt C:\Source\Test2\ *>> C:\Source\Log.txt
由于\Test2\
不存在,因此应该生成错误。我这样做是为了测试如何在更大的脚本中捕获copy-items的问题。
然而,当我运行它时,它会将copy-item错误指向控制台,而不是像我期望的那样将它重定向到Log.txt。我也试过用| out-file,但不会将任何内容拉到文件中。
知道为什么我无法捕获异常/错误吗?
答案 0 :(得分:1)
如评论中所述,*>>
仅适用于PowerShell 3.0及更高版本。您可以使用cmd样式的句柄重定向(>&
),也可以在2.0版中使用:
if($PSVersionTable.PSVersion.Major -lt 3) {
copy-item C:\Source\PSLog.txt C:\Source\Test2\ >> C:\Source\Log.txt 2>&1
} else {
copy-item C:\Source\PSLog.txt C:\Source\Test2\ *>> C:\Source\Log.txt
}
但你最好只检查$Error
自动变量的内容。 $Error[0]
将包含最新错误