【问题标题】:PowerShell - SharePoint 2010 - Unable to find type Microsoft.SharePointPowerShell - SharePoint 2010 - 找不到类型 Microsoft.SharePoint
【发布时间】:2013-12-02 21:34:11
【问题描述】:

(注意:生产服务器经过系统加固后出现以下问题):

我有一个包含以下行的 PowerShell 模块:

[OutputType([Microsoft.SharePoint.Publishing.PublishingPage])]

当我打开以管理员身份运行的 PowerShell 控制台(以及以系统管理员身份登录服务器)时,我得到以下信息:

找不到类型 [Microsoft.SharePoint.Publishing.PublishingPage]:确保已加载包含此类型的程序集。

我能够“强制”Microsoft.SharePoint.Publishing DLL 加载 LoadWithPartialName 和 Add-Type,但是当我尝试执行我的模块时,我得到与 Microsoft.SharePoint 相同的错误。

这两个 DLL 肯定都在 GAC 中(版本 14.0.0.0,因为这是 SharePoint 2010),当我查看 GAC 上的权限时,权限就足够了。

如前所述,该模块之前执行良好,并且“无法找到”错误仅在相关服务器经过第三方系统加固后才开始出现。我试图从权限和组策略的角度调查这个问题,但到目前为止我没有任何线索。

如果我完全废弃 GAC 上的权限,我能够在一定程度上在我的开发环境中重现该错误,但这并不能真正反映生产中的情况,因为生产中的权限似乎足以能够在 GAC 中“查看”一个 DLL。

任何帮助将不胜感激。

【问题讨论】:

    标签: powershell sharepoint-2010 windows-server-2008 gac


    【解决方案1】:

    [Microsoft.SharePoint.Publishing.PublishingPage] 可能会让你的运气更好 ;-)

    也就是说,对于不属于 BCL 的类型,您应该使用字符串而不是类型文字。这允许模块被加载 - 至少 - 在没有共享点的机器上。看起来像:

    [outputtype("Microsoft.SharePoint.Publishing.PublishingPage")]

    就powershell而言,约束是一样的。

    【讨论】:

    • 对不起 - 这是我的错字。我已经更正了原帖。我正在从错误的屏幕截图中复制该行(长篇故事)。但是,我将在明天早上尝试文字方法并报告。
    【解决方案2】:

    最后,右键单击 PowerShell 图标并选择“导入系统模块”是解决方案。

    当我将我的 OutputType 更改为使用引号而不是括号时,我收到一个错误,即 Get-SPSite 未被识别为 cmdlet(选择“导入系统模块”解决了此错误。)然后我又回到使用括号OutputType 并确认“导入系统模块”就是我所需要的。

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 2016-11-19
      相关资源
      最近更新 更多