无法获得基本的sharepoint powershell脚本来运行

时间:2012-10-30 15:28:21

标签: sharepoint powershell

我有一个简单的PowerShell脚本,旨在操纵Sharepoint 2010.我已将其剥离到最低限度以说明问题。

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”循环时失败(因此Snap-in加载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运行它(我更改了脚本的名称,并且字符:12相应地更改)。如我所说,错误是由foreach循环生成的,代码出现在网络上的许多示例中,因此我的本地SharePoint存在一些问题。有什么建议吗?

4 个答案:

答案 0 :(得分:4)

这是一个迟到的答案,但我是从谷歌搜索来到这里的,我想为以后的访问者解决这个问题。

此处描述完全相同的问题/原因:https://sharepoint.stackexchange.com/questions/17247/spsite-allwebs-returns-error

基本上,这是一个权限问题。如果您添加了正在运行脚本的帐户以了解相关网站集的权限,则此错误应该消失。

答案 1 :(得分:1)

尝试此更改:

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

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

答案 2 :(得分:0)

使用提升权限块解决了我。 另外,不要忘记处理sharepoint SPSite和SPWeb对象。

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

答案 3 :(得分:-1)

错误消息中的 FullyQualifiedErrorId 可能会提示问题的根本原因?

这似乎表明$ siteURL需要包含FQDN。也许代替$siteURL = "http://intranet/",您需要 $siteURL = "http://intranet.yourdomain.com"