在Powershell中创建数组可以使用逗号。
PS C:Powershell> $nums=2,0,1,2
PS C:Powershell> $nums
2
0
1
2
对于连续的数字数组可以使用一个更快捷的方法
PS C:Powershell> $nums=1..5
PS C:Powershell> $nums
1
2
3
4
5
数组的多态
象变量一样如果数组中元素的类型为弱类型,默认可以存储不同类型的值。
PS C:Powershell> $array=1,"2012世界末日",([System.Guid]::NewGuid()),(get-date)
PS C:Powershell> $array
1
2012世界末日
Guid
----
06a88783-a181-4511-9e41-2780ecbd7924
DisplayHint : DateTime
Date : 2011/12/9 0:00:00
Day : 9
DayOfWeek : Friday
DayOfYear : 343
Hour : 14
Kind : Local
Millisecond : 910
Minute : 15
Month : 12
Second : 45
Ticks : 634590369459101334
TimeOfDay : 14:15:45.9101334
Year : 2011
DateTime : 2011年12月9日 14:15:45
空数组和单元素数组
空数组
PS C:Powershell> $a=@()
PS C:Powershell> $a -is [array]
True
PS C:Powershell> $a.Count
0
1个元素的数组
PS C:Powershell> $a=,"moss"
PS C:Powershell> $a -is [array]
True
PS C:Powershell> $a.Count
1
强类型数组
Powershell数组一般具有多态性,如果你不指定元素的具体类型,解释器会自动选择合适的类型存储每个元素。如果要统一限制所有元素的类型,可是使用类型名和一对方括号作为数组变量的类型。这样每当赋值时,会自动类型检查。如果目标数据类型不能转换成功,就会抛出一个异常。
PS C:Powershell> [int[]] $nums=@()
PS C:Powershell> $nums+=2012
PS C:Powershell> $nums+=12.3
PS C:Powershell> $nums+="999"
PS C:Powershell> $nums+="can not convert"
Cannot convert value "can not convert" to type "System.Int32". Error: "Input string was not in a correct format."
At line:1 char:6
+ $nums <<<< +="can not convert"
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException