C# 提供托管元数据服务的功能

C# 提供托管元数据服务的功能,c#,powershell,sharepoint-2010,C#,Powershell,Sharepoint 2010,我创建了一个PowerShell脚本,该脚本: 使用Get-SPServiceApplicationPool、Get-SPCMetadataServiceApplicationProxy和Get-SPCMetadataServiceApplication检查服务是否已配置 使用相应的Remove-*cmdlet删除应用程序池、代理和服务(如果存在) 使用相应的New-*cmdlet创建应用程序池、代理和服务 启用分类法和元数据导航功能(如果未启用) 创建并填充组和术语集 我想在C#中实现这一点,

我创建了一个PowerShell脚本,该脚本:

  • 使用Get-SPServiceApplicationPool、Get-SPCMetadataServiceApplicationProxy和Get-SPCMetadataServiceApplication检查服务是否已配置
  • 使用相应的Remove-*cmdlet删除应用程序池、代理和服务(如果存在)
  • 使用相应的New-*cmdlet创建应用程序池、代理和服务
  • 启用分类法和元数据导航功能(如果未启用)
  • 创建并填充组和术语集
  • 我想在C#中实现这一点,作为FeatureActivated事件中带有feature事件接收器的功能。在第一步中,我遇到了第一个问题(可能还有更多)。在我自己尝试从C#获取SPIisWebServiceApplicationPool一段时间后,我反编译了Microsoft.SharePoint.Powershell,以了解get-SPSServiceApplicationPool cmdlet是如何实现的,以及如何通过访问Microsoft.SharePoint程序集中的SPIisWebApplicationSettings来实现。它使用SPIisWebApplicationSettings.Default.ApplicationPools枚举。该类标记为internal,通过在Microsoft.SharePoint程序集上包含InternalsVisibleTo属性,可以从Microsoft.SharePoint.Powershell程序集访问该类

    因此,如果没有黑客攻击和重新编译Microsoft.SharePoint程序集以允许我的程序集内部访问,也没有在我的功能中托管PowerShell,我如何检查SPIisWebServiceApplicationPool是否存在,如果存在则将其删除,然后创建新的SPIisWebServiceApplicationPool?此外,使用反射来访问内部类也不是首选。。。我正在寻找SharePoint API中缺少的内容,该API将允许我这样做