PowerShell 中的数组是什么?


数组由一组相同数据类型或不同数据类型的元素组成。当输出包含多行时,输出或存储的变量会自动变成数组。其数据类型为 **Object[] 或 ArrayList**,基本类型为 **System.array** 或 **System.Object**。

例如:

IPConfig 的输出是一个数组。

示例

PS C:\WINDOWS\system32> ipconfig
Windows IP Configuration
Ethernet adapter Ethernet:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter VirtualBox Host-Only Network:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::187b:7258:891b:2ba7%19
IPv4 Address. . . . . . . . . . . : 192.168.56.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Wireless LAN adapter Local Area Connection* 3:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Local Area Connection* 5:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :

如果将 **Ipconfig** 存储到一个变量中并检查其数据类型,则它将是 **Object[]**。

PS C:\WINDOWS\system32> $ip = ipconfig
PS C:\WINDOWS\system32> $ip.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array

类似地,如果获取任何多行输出,它也只会是数组。您可以使用如下所示的比较方法检查变量是否为数组。

$a = "Hello"
$a -is [Array]

输出

False


$ip = ipconfig
$ip -is [Array]

输出

True

数组索引从 0 开始。例如,第一行被视为索引 0,第二行被视为索引 1,依此类推,大多数情况下都是如此。但并非一直如此。当输出显示为多个集合时,第一组输出被视为索引值 0,第二组被视为索引值 1。

您可以获取 ipconfig 输出的第二行,如下所示。

$ip = ipconfig
$ip[0]

输出

Windows IP Configuration

您可以使用 **Select-String** 管道命令过滤整个输出以查找特定单词,以便显示包含该单词的行。

例如,要检查系统中可用的以太网适配器。

ipconfig | Select-String -pattern "Adapter"

输出

Ethernet adapter Ethernet:
Ethernet adapter VirtualBox Host-Only Network:
Wireless LAN adapter Local Area Connection* 3:
Wireless LAN adapter Local Area Connection* 5:
Ethernet adapter Ethernet 3:
Ethernet adapter Ethernet 4:
Wireless LAN adapter Wi-Fi:
Ethernet adapter Bluetooth Network Connection:

类似地,您可以过滤 IPv4 地址。

ipconfig | Select-String -pattern "IPv4 Address"

输出

IPv4 Address. . . . . . . . . . . : 192.168.56.1
IPv4 Address. . . . . . . . . . . : 192.168.0.104

更新于:2020年2月14日

278 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告