首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找用于Microsoft.Windows.ServerManager的C#库

寻找用于Microsoft.Windows.ServerManager的C#库
EN

Stack Overflow用户
提问于 2014-08-06 14:30:36
回答 2查看 1.2K关注 0票数 1

我使用System.Management.Automation命名空间是为了在C# .NET程序中使用powershell。

但是,根据http://technet.microsoft.com/en-us/library/ee662309.aspxAdd-WindowsFeature返回Microsoft.Windows.ServerManager.Commands.FeatureOperationResult类型。

这个对象在MSDN上是没有文档的,但是我能够使用PowerShell和Get-Member命令检索它的成员。

代码语言:javascript
复制
PS C:\Users\Administrator> $RES[0] | Get-Member


   TypeName: Microsoft.Windows.ServerManager.Commands.FeatureOperationResult

Name          MemberType Definition
----          ---------- ----------
Equals        Method     bool Equals(System.Object obj)
GetHashCode   Method     int GetHashCode()
GetType       Method     type GetType()
ToString      Method     string ToString()
ExitCode      Property   Microsoft.Windows.ServerManager.Commands.FeatureOperationExitCode ExitCode {get;}
FeatureResult Property   Microsoft.Windows.ServerManager.Commands.FeatureResult[] FeatureResult {get;}
RestartNeeded Property   Microsoft.Windows.ServerManager.Commands.RestartState RestartNeeded {get;}
Success       Property   System.Boolean Success {get;}

现在,我想在C#中使用这种类型,但是为此,我需要有具有这个命名空间的库。我只能找到

代码语言:javascript
复制
C:\Windows\winsxs\amd64_microsoft.windows.servermanager_31bf3856ad364e35_6.1.7601.17514_none_c70b231167ed6fc3

Microsoft.Windows.ServerManager.dll所在的目录。这个库可以在visual中引用,但是它的名称空间不包含.Commands名称空间(?)类(?)

  1. 知道在哪里能找到合适的图书馆吗?
  2. 也许有方法可以检索成功(布尔)属性而不添加这个库作为引用?

在C#中,$RES将使用PSObject类型作为Invoke()命令的结果

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-06 14:57:17

我发现了。为了能够使用Add-WindowsFeature,您必须首先导入名为ServerManager的服务器模块。此服务器模块位于

代码语言:javascript
复制
C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ServerManager

目录。在同一个目录中,有包含行的ServerManager.psd1文件

代码语言:javascript
复制
NestedModules = 'Microsoft.Windows.ServerManager.PowerShell'

如果您搜索Microsoft.Windows.ServerManager.PowerShell.dll库。您应该找到它的一个实例,这个实例包含我在问题中提到的.Commands命名空间。

票数 0
EN

Stack Overflow用户

发布于 2018-05-29 18:52:47

相关DLL的名称和位置是实现的详细信息,并且可能在不同版本之间更改。我发现在PowerShell结果中处理结构化对象的最简单方法是使用C#的“动态”特性。例如:

代码语言:javascript
复制
public bool FeatureIsInstalled(string name)
{
    bool result = false;

    using (Pipeline pipeline = runspace.CreatePipeline(
        string.Format("Get-WindowsFeature '{0}'", name)))
    {
        Collection<PSObject> output = pipeline.Invoke();
        if (output.Count > 0)
        {
            dynamic o1 = output[0];
            result = (bool)o1.Installed;
        }
    }

    return result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25163073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档