首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell到C# - Get-WMIObject

Powershell到C# - Get-WMIObject
EN

Stack Overflow用户
提问于 2013-08-16 19:43:23
回答 2查看 3.7K关注 0票数 3

下面是powershell:

代码语言:javascript
复制
$app = Get-WmiObject -Class SMS_UserApplicationRequest -Namespace root/SMS/site_sitename -
 ComputerName computername | Select-Object User, Application, RequestGUID

$app

它工作良好,返回的信息没有问题。

在c#中运行:

代码语言:javascript
复制
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();

PowerShell powerShell = PowerShell.Create();
powerShell.Runspace = runspace;
powerShell.AddScript(script);

Collection<PSObject> results = powerShell.Invoke();

foreach (PSObject result in results)
{
    MessageBox.Show(result.ToString());
}

runspace.Close();

这显示了baseObject,也就是UserApplicationRequest,但是如何访问请求中的数据呢?(这是选择对象用户,应用程序,RequestGUID)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-17 20:29:27

如果您使用的是PowerShell V3 (System.Management.Automation.dll 3.0),请不要忘记它现在位于DLR上。这意味着PSObject可以通过dynamic关键字在C#中使用,例如:

代码语言:javascript
复制
foreach (dynamic result in results)
{
    var msg = String.Format{"User: {0}, Application: {1}, RequestGUID: {2}", 
                            result.User, result.Application, result.RequestGUID);
    MessageBox.Show(msg);
}
票数 1
EN

Stack Overflow用户

发布于 2013-08-16 20:50:14

为了获得由Select-Object cmdlet创建的自定义对象,可以迭代Properties成员:

代码语言:javascript
复制
foreach (var result in results)
{
    foreach ( var property in result.Properties )
    {
        MessageBox.Show( string.Format( "name: {0} | value: {1}", property.Name, property.Value ) );
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18280977

复制
相关文章

相似问题

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