1

我创建了一个 PowerShell 脚本:

  1. 使用 Get-SPServiceApplicationPool、Get-SPMetadataServiceApplicationProxy 和 Get-SPMetadataServiceApplication 检查服务是否已配置
  2. 使用相应的 Remove-* cmdlet 删除应用程序池、代理和服务(如果存在)
  3. 使用对应的 New-* cmdlet 创建应用程序池、代理和服务
  4. 如果未启用,则启用分类和元数据导航功能
  5. 创建并填充组和术语集

我想在 C# 中将其实现为具有 FeatureActivated 事件中的功能事件接收器的功能。我在第一步就遇到了第一个问题(可能还有更多)。在试图弄清楚如何自己从 C# 获取 SPIisWebServiceApplicationPool 一段时间后,我反编译了 Microsoft.SharePoint.Powershell 以查看 Get-SPServiceApplicationPool cmdlet 是如何实现的,它是通过访问 Microsoft.SharePoint 程序集中的 SPIisWebApplicationSettings 来完成的。它使用 SPIisWebApplicationSettings.Default.ApplicationPools 枚举。该类被标记为内部类,通过在 Microsoft.SharePoint 程序集上包含 InternalsVisibleTo 属性,允许从 Microsoft.SharePoint.Powershell 程序集对其进行访问。

因此,如果没有破解和重新编译 Microsoft.SharePoint 程序集以让我的程序集 InternalsVisibleTo 访问并且没有在我的功能中托管 PowerShell,我如何检查 SPIisWebServiceApplicationPool 是否存在,如果存在则将其删除,然后创建一个新的 SPIisWebServiceApplicationPool?此外,不喜欢使用反射来访问内部类......我正在寻找我在 SharePoint API 中缺少的东西,这将使我能够做到这一点。

4

0 回答 0