Copy-Item不会将错误重定向到日志文件

时间:2015-04-10 21:56:22

标签: powershell

我在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,但不会将任何内容拉到文件中。

知道为什么我无法捕获异常/错误吗?

1 个答案:

答案 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]将包含最新错误