使用SharePoint API,我一直在研究尝试通过索引器而不是SPList
获取不存在的TryGetList
之间的区别。我假设索引器抛出了TryGetList
没有的异常。这确实是C#的情况:
SPSite site = new SPSite("http://urlofsite");
Console.WriteLine(site.RootWeb.Lists["hello"].Title);
它会引发ArgumentException
以下Message
:
List 'hello' does not exist at site with URL 'http://urlofsite'.
但是当我使用PowerShell时,没有抛出异常:
$site = Get-SPSite http://urlofsite
$site.RootWeb.Lists["hello"].Title
我原以为PowerShell只是.NET代码的包装器,并且索引器本身就抛出了异常,但如果是这样的话,PowerShell也不会抛出异常吗?我知道很多情况下PowerShell不会抛出C#所做的异常,最明显的是在获取null对象的属性时的NullReferenceExceptions(就像在我的代码中一样),但我认为这与PowerShell的语法和评估有关。 / p>
在此实例中,SharePoint API是否具有适用于PowerShell的特殊条件?或者这是PowerShell中的一些东西,或许忽略了索引器以便将内容传递到管道中?尽管如此,这看起来并不正确......我误解了什么?
奖励SharePoint问题 - 在使用PowerShell时,有没有理由在列表索引器上使用TryGetList
?
答案 0 :(得分:0)
您可以尝试通过运行Trace-Command cmdlet来了解幕后发生的事情。
例如:
Trace-Command -Expression {$site.RootWeb.Lists["hello"].Title} -PSHost -Name *
Name参数表示要跟踪的Windows PowerShell组件的名称。您可以从Get-TraceSource cmdlet获取跟踪源列表,并仅包含必需的跟踪源。