获取 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
}
技巧
如何查找托管代码 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
}
技巧