【发布时间】:2019-07-16 03:12:40
【问题描述】:
对 C# 很陌生,我正在尝试编写一个简单的工具来检查服务器上的特定角色和功能并显示它们是否已安装。简单的!
问题是我一辈子都不知道如何捕获这个 Powershell 命令的 Installed State 值(以 C# 字符串格式):
"Get-WindowsFeature | ? {$_.Name -match \"Web-Mgmt-Console\"} | Select -exp Installed State"
命令本身在 Powershell 中运行(删除 \ 时)并且只返回“false”。我的代码试图捕捉这个结果。
cmd = "Get-WindowsFeature | ? {$_.Name -match \""+winFeatures[i]+
"\"} | Select -exp Installed State";
cmdout = ps.AddScript(cmd).Invoke().ToString();
cmdout 的 VS 中的值显示为 "System.Collections.ObjectModel.Collection1[System.Management.Automation.PSObject]",而不是已安装状态,我猜这很酷。我知道 .Invoke() 将返回一个集合,因此 .ToString() 应该获取结果(“True”或“False”并将其作为字符串返回给 cmdout。
我在这里缺少什么?令人惊奇的是,Powershell 在 shell 中可以如此简单,但在 C# 中却如此困难。我已经搜索和阅读了 2 天,但无法弄清楚这一点。
【问题讨论】:
-
以为我已经弄明白了,但没有。删除此评论。
标签: c# powershell