PowerShell 数组
help about_Arrays
创建数组
方法一
,
Comma operator,有两种用法。
一种是用作二元操作符(binary operator)
$a = 1,2,3
另一种是用作一元操作符(unary operator)的形式,创建一个只有一个元素的一维数组:
$a = ,1
方法二
..
Range operator,生成一个整数数组:
$a = 1..10 # 从 1 到 10
$a = 10..1 # 从 10 到 1
方法三
@(expr)
Array subexpression operator,返回一个数组,expr 的结果为这个数组的元素。
$a = @() # 空数组
$a = @(1,2,3)
方法四
$(expr)
Subexpression operator,如果 expr 的结果是单个值,则返回这个值;如果是多个值,则返回一个数组。
$a = $(Get-Process)
常见操作
数组的 Type 为 System.Object[]
$a.GetType().FullName
判断是否为数组
$a -is [Array] # True
获取数组元素
# 获取所有的元素
$a
# 获取第一个元素
$a[0]
# 获取最后一个元素
$a[-1]
# 获取索引为 1, 3, 5, 7 的元素
$a[1,3,5,7]
range operator 用到索引中
# 索引为 1,2,3 的元素
$a[1..3]
# 索引为 0,-1,-2 的元素
$a[0..-2]
# 索引为 0,2,4,5,6的元素
$a[0, 2 + 4..6]
增删数组元素
.Net 数组的长度是固定的,不能添加删除元素。
添加一个元素
$a = @()
$a += 'a'
# 空数组
$colors = @()
$colors = $colors + "black"
$colors += "orange"
+
可以合并数组
$a = "a","b","c"
$b = 1,2,3
$c = $a + $b
$colors = $null
Remove-Item variable:monthly_sales
$colors = $colors | where {$_ -ne "yellow"}
遍历数组
$a = "a","b","c"
# ForEach statement
foreach ($x in $a) {
$x
}
# ForEach-Object cmdlet 别名 ForEach,%
$a | ForEach-Object {
$_
}
# PowerShell 4, ForEach method
$a.ForEach({
$_
})
数组切片
数组排序
$colors = $colors | Sort-Object
合并数组元素
-join
Join operator
# 第一种方式,不指定 Delimiter
# 这里, -join 操作符比 , 操作符优先级高,因此加一个括号
-join ("a", "b", "c")
# abc
# 第二种方式,指定 Delimiter
# 指定 Delimiter 为一个空格
"a", "b", "c" -join " "
# a b c
搜索数组元素
$colors[0 .. 5] -like "*ck*"