gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:11:51 25 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。

这是 Powershell 的事情还是 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/46693743/

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