如何查找托管代码SharePoint(无论哪个版本)cmdlet实现?
MSDN未指定cmdlet的实现位置和方式。只有如何使用它们的信息。这是出于某种原因吗?
答案 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
}
技巧