获取 Sharepoint Powershell cmdlet 的实现

Get implementation of sharepoint powershell cmdlets

如何查找托管代码 SharePoint(无论哪个版本)cmdlet 实现?

MSDN 未指定 cmdlet 的实现位置和方式。只有有关如何使用它们的信息。这是出于某种原因吗?

所以我开始挖掘……

让我们以 SharePoint 2013 15 Hive 为例。

15 Hive文件夹结构解释:SharePoint 2013: The 15 Hive and other important directories

CMDLET 注册文件位置

15/Config/Powershell/Registration 文件夹包含 XML cmdlet 注册文件,其中对于给定的程序集有已定义的 cmdlet 定义列表。

示例 XML

<ps:Cmdlet>
    <ps:VerbName>Uninstall-SPFeature</ps:VerbName>
    <ps:ClassName>Microsoft.SharePoint.PowerShell.SPCmdletUninstallFeature</ps:ClassName>
    <ps:HelpFile>Microsoft.SharePoint.PowerShell.dll-help.xml</ps:HelpFile>
</ps:Cmdlet>

SharePoint cmdlet 在 WSSCmdlet.xml 中注册(还有很多),它们的定义程序集是:

Assembly Name="Microsoft.SharePoint.PowerShell, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"

程序集位于 GAC 中:

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.PowerShell

托管 C# 代码

使用像 ILSpy 这样的反编译器,您可以在 DLL 中找到确切的 class 并获得 cmdlet 的 c# 实现。

例如

[SPCmdlet(RequireLocalFarmExist = true), Cmdlet("Get", "SPSiteUrl", SupportsShouldProcess = true)]
public sealed class SPCmdletGetSPSiteUrl : SPGetCmdletBase<SPSiteUrl>
{
    // implementation details irrelevant for question context
}

技巧