.net – 为什么Get-SPWeb内部的错误没有传播到PowerShell?

如果我有以下内容

$webs = Get-SPWeb -Limit all -ErrorAction Stop

foreach($web in $webs) 
{
    Write-Host $web.SiteUsers.xml 
}

我知道.NET中的相同代码将从我的服务器上的一个站点的SPWeb.SiteUsers.xml中获得异常.

实际的异常或原因并不重要 – 但是运行上面的代码我没有看到传播或报告给PowerShell的任何异常,$web.SiteUsers.xml只是在网站上出现错误的ruturns null.

这是一个强大的东西还是Get-SPWeb的怪癖?

使用属性语法时,PowerShell将捕获所有异常.如果要查看异常,则需要使用方法语法.例如,而不是:

$web.SiteUsers

你会用:

$web.get_SiteUsers()

如果Set-StrictMode允许异常通过会很好,但事实并非如此.

此行为的主要原因与格式有关.有许多常用属性使用默认格式抛出异常,并且错误消息使输出混乱绝对不是正确的做法.

也就是说,PowerShell在格式化输出时只捕获异常似乎是合理的.您可以使用Microsoft Connect站点提供反馈.例如,此项目抱怨此确切问题:http://connect.microsoft.com/PowerShell/feedback/details/533233/exceptions-thrown-in-property-getters-are-silently-ignored

相关文章
相关标签/搜索