gpt4 book ai didi

.net - 为什么 Get-SPWeb 中的错误不会传播到 powershell?

转载 作者:行者123 更新时间:2023-12-02 23:29:26 24 4
gpt4 key购买 nike

如果我有以下

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

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

我知道 .NET 中的相同代码会从 SPWeb.SiteUsers.xml 得到一个异常对于我服务器上的一个站点。

实际异常或为什么不重要 - 但运行上面的代码我没有看到任何异常传播或报告给 PowerShell,$web.SiteUsers.xml 只是在出现错误的站点上返回 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

关于.net - 为什么 Get-SPWeb 中的错误不会传播到 powershell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18902542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com