Windows Powershell 命令返回数组

 更新时间:2014年09月06日 11:46:32   投稿:hebedich  
这篇文章主要介绍了Windows Powershell 命令返回数组的使用方法,需要的朋友可以参考下

当我们把一个命令的执行结果保存到一个变量中,可能会认为变量存放的是纯文本。
但是,事实上Powershell会把文本按每一行作为元素存为数组。如果一个命令的返回值不止一个结果时,Powershell也会自动把结果存储为数组。

PS C:Powershell> $IPcfg=ipconfig
PS C:Powershell> $IPcfg

Windows IP Configuration
Ethernet adapter Local Area Connection:

  Connection-specific DNS Suffix . : ***
  Link-local IPv6 Address . . . . . : ***
  IPv4 Address. . . . . . . . . . . : 192.168.140.128
  Subnet Mask . . . . . . . . . . . : 255.255.252.0
  Default Gateway . . . . . . . . . : 192.168.140.1

Tunnel adapter isatap.mossfly.com:

  Connection-specific DNS Suffix . : ***
  Link-local IPv6 Address . . . . . : ***
  Default Gateway . . . . . . . . . :***

Tunnel adapter Teredo Tunneling Pseudo-Interface:

  Media State . . . . . . . . . . . : Media disconnected
  Connection-specific DNS Suffix . :
PS C:Powershell> $IPcfg.Count
22

使用数组存储结果
判断一个变量是否为数组

PS C:Powershell> $ip=ipconfig
PS C:Powershell> $ip -is [array]
True
PS C:Powershell> "abac" -is [array]
False
PS C:Powershell> $str="字符串"
PS C:Powershell> $str.ToCharArray() -is [array]
True

查看数组的元素个数用$array.Count属性。访问第x个元素,使用$array[x-1],因为数组是以0开始索引的。

使用管道对数组进一步处理

PS C:Powershell> ipconfig | Select-String "IP"

Windows IP Configuration
  Link-local IPv6 Address . . . . . : ***
  IPv4 Address. . . . . . . . . . . : ***
  Link-local IPv6 Address . . . . . : ***

使用真实的对象操作

为什么不愿把IPconfig返回的结果称为对象,因为它不是真正Cmdlet命令,真正的Powershell命令返回的数组元素可不止一个字符串,它是一个内容丰富的对象。

PS C:Powershell> ls

  Directory: C:Powershell

Mode        LastWriteTime   Length Name
----        -------------   ------ ----
d----    2011/11/23   17:25      ABC
d----    2011/11/29   18:21      myscript
-a---    2011/11/24   18:30   67580 a.html
-a---    2011/11/24   20:04   26384 a.txt
-a---    2011/11/24   20:26   12060 alias
-a---    2011/11/24   20:27   12060 alias.ps1
-a---    2011/11/23   17:25     0 b.txt
-a---    2011/11/23   17:25     0 c.txt
-a---    2011/11/23   17:25     0 d.txt
-a---    2011/11/25   11:20    556 employee.xml
-a---    2011/11/29   19:23   21466 function.ps1
-a---    2011/11/28   11:12    186 LogoTestConfig.xml
-a---    2011/11/24   17:37    7420 name.html
-a---    2011/11/28   15:30     63 ping.bat
-a---    2011/11/24   17:44   735892 Powershell_Cmdlets.html
-a---    2011/11/30   16:04    2556 psdrive.html
-a---     2011/12/2   18:47    140 test.ps1
-a---    2011/11/23   17:37    242 test.txt
-a---    2011/11/28   16:42    170 test.vbs
PS C:Powershell> $result=ls
PS C:Powershell> $result.Count
20


数组的每一个元素存放的是一个System.IO.DirectoryInfo对象。
当我们输出这些对象时,Powershell会自动帮我们把它转换成友好的文本格式。

PS C:Powershell> $result[0].gettype().fullname
System.IO.DirectoryInfo
PS C:Powershell> $result[0]
  Directory: C:Powershell
Mode        LastWriteTime   Length Name
----        -------------   ------ ----
d----    2011/11/23   17:25      ABC对于任何一个对象都可以使用Format-List * 查看它所有的属性和方法。

PS C:Powershell> $result[0] | fl *

PSPath      : Microsoft.PowerShell.CoreFileSystem::C:PowershellABC
PSParentPath   : Microsoft.PowerShell.CoreFileSystem::C:Powershell
PSChildName    : ABC
PSDrive      : C
PSProvider    : Microsoft.PowerShell.CoreFileSystem
PSIsContainer   : True
BaseName     : ABC
Mode       : d----
Name       : ABC
Parent      : Powershell
Exists      : True
Root       : C:
FullName     : C:PowershellABC
Extension     :
CreationTime   : 2011/11/23 17:25:53
CreationTimeUtc  : 2011/11/23 9:25:53
LastAccessTime  : 2011/11/23 17:25:53
LastAccessTimeUtc : 2011/11/23 9:25:53
LastWriteTime   : 2011/11/23 17:25:53
LastWriteTimeUtc : 2011/11/23 9:25:53
Attributes    : Directory

相关文章

  • PowerShell打开或关闭光驱

    PowerShell打开或关闭光驱

    这里给大家分享的是使用PowerShell实现打开或关闭光驱的小程序,大家也许根本用不到,这里只是个例子,让大家学习下如何操作windows API
    2015-09-09
  • PowerShell添加本地账户脚本分享

    PowerShell添加本地账户脚本分享

    这篇文章主要介绍了PowerShell添加本地账户脚本分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-03-03
  • PowerShell中使用Get-Alias命令获取cmdlet别名例子

    PowerShell中使用Get-Alias命令获取cmdlet别名例子

    这篇文章主要介绍了PowerShell中使用Get-Alias命令获取cmdlet别名的例子,PowerShell中兼容DOS下和Linux下的很多命令,这些都是靠别名来实现的,需要的朋友可以参考下
    2014-08-08
  • PowerShell脚本开发之对指定IP进行端口扫描

    PowerShell脚本开发之对指定IP进行端口扫描

    在本文通过一段小脚本的方式引入了通过PowerShell实现简单安全渗透功能的想法,首先介绍了该小脚本是如何实现功能的,接下来对创建脚本工具集并导入的方法,随后又在该工具集中创建了Test-TCPPort函数,并介绍了调用方法.
    2014-10-10
  • PowerShell命令中包含空格如何运行?

    PowerShell命令中包含空格如何运行?

    这篇文章主要介绍了PowerShell命令中包含空格如何运行?即在PowerShell中运行包含空格的命令的方法,需要的朋友可以参考下
    2014-08-08
  • Powershell小技巧--将文件夹中的大文件分成若干份

    Powershell小技巧--将文件夹中的大文件分成若干份

    这篇文章主要介绍了使用Powershell将文件夹中的大文件分成若干份的一段代码分享,非常实用,大家也可以根据需求自己来稍微调整下
    2014-09-09
  • 探索PowerShell(九) 条件控制、逻辑

    探索PowerShell(九) 条件控制、逻辑

    PowerShell作为一个动态脚本语言,同样具有条件判断、逻辑控制的能力。诸如if、elseif、else以及switch都是被PowerShell所支持的
    2012-12-12
  • Powershell创建数组正确、更快的方法

    Powershell创建数组正确、更快的方法

    这篇文章主要介绍了Powershell创建数组正确、更快的方法,Powershell使用ArrayList创建数组的例子,需要的朋友可以参考下
    2014-07-07
  • PowerShell注册表操作命令总结

    PowerShell注册表操作命令总结

    这篇文章主要介绍了PowerShell注册表操作命令总结,对访问注册表所需的所有命令做了一简要描述,需要的朋友可以参考下
    2014-05-05
  • 探索PowerShell(十) 循环语句介绍

    探索PowerShell(十) 循环语句介绍

    本节所要讨论的内容的实质更多的偏向于程序设计方面,所以在此不做过多详细讲解,只针对PowerShell中的应用进行具体讲解
    2012-12-12

最新评论