2012-10-30 61 views
2

我有一個簡單的powershell腳本,旨在操縱Sharepoint 2010。我已經將其簡化爲最小來說明問題。無法獲得基本的SharePoint PowerShell腳本運行

Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue 
$siteURL = "http://intranet/" 
$site = Get-SPSite($siteURL) 

foreach ($web in $site.AllWebs) { 
    Write-Host "Inspecting " $web.Title 
} 

當我推出了「foreach」循環(所以管理單元的負載OK和Get-SPSite的似乎($ SITEURL)不會引起錯誤),它失敗。

該錯誤消息是

C:\temp\sp_dm.PS1 : Exception has been thrown by the target of an invocation. 
At line:1 char:12 
+ .\sp_dm.PS1 <<<< 
    + CategoryInfo   : NotSpecified: (:) [sp_dm.PS1], TargetInvocationExceptio 
    + FullyQualifiedErrorId : System.Reflection.TargetInvocationException,sp_dm.PS1 

問題不是線:1的腳本,該消息是指線:命令1中I型運行它(I改變的名稱腳本和char:12相應地改變)。正如我所說,錯誤是由foreach循環產生的,並且代碼出現在網上的很多例子中,所以我的本地SharePoint存在一些問題。有什麼建議麼?

+0

如果您刪除「-erroraction SilentlyContinue」,會得到不同的錯誤嗎?似乎如果那是失敗的,你不希望它靜靜地發生。 –

回答

1

嘗試這種變化:

$siteURL = "http://intranet/" 
$site = Get-SPWeb($siteURL) 

    foreach ($web in $site.Site.AllWebs) 
-1

也許FullyQualifiedErrorId在錯誤消息給出了有關的問題根源的暗示?

這似乎表明$ siteURL需要包含FQDN。也許而不是$siteURL = "http://intranet/"你需要$siteURL = "http://intranet.yourdomain.com"

+1

FullyQualifiedErrorId是該例外的完整名稱,而不是在站點URL中使用FQDN的建議 – shufler

0

通過使用提升的權限塊爲我解決。 另外,不要忘記處理SharePointite SPSite和SPWeb對象。

[Microsoft.SharePoint.SPSecurity]::RunWithElevatedPrivileges({ 
$Site = Get-SPSite $siteUrl 
Foreach ($web in $Site.AllWebs) 
{ 
    #do something.. 
    $web.Dispose() 
} 
$Site.Dispose() 
});