2

我正在编写一个 powershell 脚本来在我们的共享点服务器上执行一些归档功能。我正在使用托管 Sharepoint 的服务器和运行 powershell 的远程计算机测试此脚本。脚本的功能部分按照服务器端的设计运行,我只是想修改它以远程运行。我已经在服务器和客户端上使用各自的设置启用了 WSmanCredSSP,并为两者之间的通信启用了所有其他设置。运行脚本,我可以使用凭据成功启动 PSSession,但我无法从本地计算机运行任何与共享点相关的功能。我正在使用 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.. .": "在尝试枚举集合时发生以下异常:"访问被拒绝。"" 关于为什么不授予权限的任何想法?

4

0 回答 0