关于共享点:强制使用 PSSessionOption -NoMachineProfile 但 SPFarm.Local 为空

Forced using the PSSessionOption -NoMachineProfile BUT SPFarm.Local is null

我目前正在编写一个 Powershell 模块来提供安装/操作 SharePoint 2007 的功能。
我的一个脚本检查 SharePoint 服务器场的运行状况。

所以我使用远程 Powershell:使用 New-PSSession。
在我的虚拟化测试场(Windows Server 2003、相同域、相同管理员...)中,New-PSSession cmdlet 失败:

enter

谷歌搜索后,我看到的唯一解决方案是使用 NoMachineProfile 选项:
那解决了我的问题。

现在的问题是:
我需要使用 SharePoint 对象:SPFarm.Local(在所有服务器上)

1
2
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
[Microsoft.SharePoint.Administration.SPFarm]::Local

此代码在本地工作(在所有服务器上)
但是当我远程运行它时(使用 NoMachineProfile 选项), SPFarm.Local 为 null !

我认为(我无法检查)这是因为 SharePoint 使用了一些由于 NoMachineProfile 选项而未加载的注册表值。

所以:

1 - 由于 NoMachineProfile 选项,您是否认为 SPFarm.Local 为空?

2 - 你知道如何在不使用 -NoMachineProfile 选项的情况下解决第一个问题吗?

非常感谢!


我相信您的问题与 PowerShell Multi-Hop(多跳操作的关系图如下)问题有关,此处讨论的问题... PowerShell 默认无法执行多跳操作,因为您的凭据没有传递到下一个服务器...因为您正在尝试从远程主机联系场中的不同 SP 服务器。我建议您阅读以下与多跳场景相关的博客条目,并按照他的说明来纠正您的问题。

使用 CredSSP 进行多跳身份验证

http://www.ravichaganti.com/blog/?p=1230

我知道这张图提到了文件服务器,但它的基本原理是一样的。

PowerShell