PowerShell在访问其Result属性

时间:2016-05-04 22:01:11

标签: powershell

在至少PowerShell v4(Server 2012R2)和v5(Win10)上,当访问出现故障的System.Threading.Tasks.Task对象的Result属性时,它似乎返回null,而不是抛出导致它出错的异常。 / p>

$t = new-object System.Threading.Tasks.TaskCompletionSource[int]
$t.SetException((New-Object System.Exception 'a'))

$t.Task.Result # No exception

$t.Task.Result -eq $null # True

当访问Result getter时,等效的C#程序会抛出,正如MSDN所说的那样:

  

请注意,如果在任务操作期间发生异常,或者任务已被取消,则Result属性不会返回值。相反,尝试访问属性值会引发AggregateException异常。

我无法在互联网上找到有关此行为的任何内容。我做错了什么或者PS对Result属性有什么特殊处理吗?

请注意

$t.Task.Wait() # Does throw the exception

确实会抛出一个AggregateException。

编辑:我现在发现Why don't errors rasied inside Get-SPWeb get propagated to powershell?这是重复的。正如PetSerAl在这个问题的评论和该问题的接受答案中所说的那样,PS会抑制所有getter的异常并返回null。

0 个答案:

没有答案