尝试捕获不使用Get-ChildItem

时间:2015-07-27 20:58:21

标签: powershell try-catch

我有这个Powershell代码:

Function blah
{
...
try
{
    $numct = ( Get-ChildItem "\\devicename\c$\Users\user\Documents\ShareFile\Folders" -ea "Stop" | Measure-Object ).Count;
}
catch
{
    "Error: " + $($_.Exception.Message)
    return $false
}

它在成功的情况下有效,但如果您对虚假设备进行更改devicename,则不会属于catch部分。

1 个答案:

答案 0 :(得分:2)

此代码段看起来像是最初在函数中?

如果是这样,"Error: " + $($_.Exception.Message)行将该消息作为函数的返回值返回,但它可能不会显示它。

由于打算显示,因此需要致电Write-HostWrite-VerboseWrite-Error等。

通过单独使用该值,您隐式调用Write-Object,它在函数中将对象返回给其调用者。

一旦你完成所有功能,主机决定如何处理它(通常显示它)。使用上述函数之一显式写入文本。