当前位置:  开发笔记 > Android > 正文

如何将powershell命令的输出转换为数组

如何解决《如何将powershell命令的输出转换为数组》经验,为你挑选了2个好方法。

我试图将powershell命令的输出放入一个数组,但它似乎无法正常工作.实际上我想用行和列索引来解决输出问题.例如

$a=Get-Service

带输出(部分)

Status   Name               DisplayName                           
------   ----               -----------                           
Stopped  AeLookupSvc        Application Experience                
Stopped  ALG                Application Layer Gateway Service     
Stopped  AppIDSvc           Application Identity                  
Running  Appinfo            Application Information               
Stopped  AppMgmt            Application Management    

我想在第二行解决DisplayName,例如

$a[2][2]

然后它应该给予

Application Layer Gateway Service

但这似乎不起作用.

有人可以帮忙吗?



1> FoxDeploy..:

这类问题让我觉得你可能来自Unix背景,习惯于不得不处理指标和列索引等等.

从根本上说,PowerShell是一种面向对象的脚本语言.你根本不需要在这里做你所要求的事情.

例如,如果你想捕获结果,那么抓住其中一个对象的属性,这就是如何完成的.

首先,捕获输出.

$a=Get-Service

现在,您需要特定实体的特定属性.为此,索引到您想要的对象.

>$a[2]
Status   Name               DisplayName                           
------   ----               -----------                           
Stopped  AJRouter           AllJoyn Router Service                

要选择.DisplayName,您只需将其附加到上一个命令的末尾即可.

> $a[2].DisplayName
AllJoyn Router Service

如果要选择多个值,则可以使用此方法.

#Select multiple values from one entity
$a[2] | select DisplayName, Status

>DisplayName                        Status
-----------                        ------
Application Layer Gateway Service Stopped

#Select multiple values from each in the array
$a | select DisplayName, Status

>DisplayName                                               Status
-----------                                               ------
Adobe Acrobat Update Service                             Running
AllJoyn Router Service                                   Stopped
Application Layer Gateway Service                        Stopped
Application Identity                                     Stopped



2> Joey..:

如果没有从属性名称到数组索引的映射,这是不可能的.请注意,您在输出中看到的只是部分属性列表(在某个XML文件中定义).因此,甚至没有一种简单的方法可以将它们转换为数组索引.

但是,我也不太了解你的需求.您可以$a[1]按预期获得第二项服务.然后你可以获得它的DisplayName属性值$a[1].DisplayName.PowerShell始终使用对象.只是为了获取数据,根本不需要回退到文本解析或神秘列索引.有一种更简单的方法.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有