获取sharepoint powershell cmdlet的实现

时间:2017-05-31 20:59:10

标签: powershell sharepoint cmdlets

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

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

1 个答案:

答案 0 :(得分:0)

所以我开始挖掘......

让我们以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 \组件\ GAC_MSIL \ Microsoft.SharePoint.PowerShell

Manged C#Code

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

例如

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

技巧

  1. How to import an SPWeb using c# to have the same behavior than PowerShell?