我正在编写一个powershell脚本来在我们的sharepoint服务器上执行一些归档功能。我正在使用托管Sharepoint的服务器和运行powershell的远程计算机来测试此脚本。脚本的功能部分按照服务器端的设计运行,我只是想修改它以远程运行。我已经在服务器和客户端上使用各自的设置启用了WSmanCredSSP,并启用了两者之间通信的所有其他设置。运行脚本,我可以使用凭据成功启动PSSession,但我无法从本地计算机运行任何与sharepoint相关的功能。我正在使用Invoke-Command运行“Add-PSSnapin Microsoft.Sharepoint.Powershell”以及其他一些代码来收集网站信息。这是我代码中的一段代表我的问题:
param(
[string]$sitePath = "http://siteurl",
[string]$webPath = "",
[string]$sourceList = "",
)
$session = New-PSSession -Computername 192.168.5.139 -authentication -Credential CompName\admin
Invoke-Command -session $session -ScriptBlock {
Write-Host $Host.name
Add-PSSnapin Microsoft.Sharepoint.Powershell
Start-SPAssignment -Global
Write-Host "What is the name of the source list? " -NoNewLine
$sourceList = Read-Host
$site = new-object Microsoft.SharePoint.SPSite($sitePath)
$web = $site.AllWebs | where { $_.name -eq $webPath}
}
代码一直运行到“$ site = new-object ...”行,它会生成此错误: “找不到构造函数。无法为类型Microsoft.SharePoint.SPSite找到合适的构造函数。” 我假设这意味着没有为snapin命令启动sharepoint程序集,虽然我无法弄清楚原因,因为它从服务器端运行得很好。 Invoke-command里面的$ Host.name输出“ServerRemoteHost”,我相信这表明它正在发挥作用。对此有任何帮助将不胜感激,我当然不是PowerShell或sharepoint的专家,但我需要做到这一点。感谢。
更新:我意识到需要在Invoke-command块中创建$ sitePath和$ webPath,在执行此操作之后,不再出现构造函数错误,而是在“$ web = $ site”行生成新的错误。 Allwebs ...“:”尝试枚举集合时发生以下异常:“访问被拒绝。”“关于为什么不授予权限的任何想法?