1.@在以下用法都一样(array);并且是可选的
$a = 1,2,3,4,5
$b = (1,2,3,4,5)
$c = @(1,2,3,4,5)
PS C:\Users\Administrator> $a = 1,2,3,4,5
PS C:\Users\Administrator> $b = (1,2,3,4,5)
PS C:\Users\Administrator> $c = @(1,2,3,4,5)
PS C:\Users\Administrator> $a
1
2
3
4
5
PS C:\Users\Administrator> $b
1
2
3
4
5
PS C:\Users\Administrator> $c
1
2
3
4
5
PS C:\Users\Administrator>
2.在创建空array时,必须使用@
$a = @()
$b = () #错误写法
PS C:\Users\Administrator> $a = @()
PS C:\Users\Administrator> $b = ()
所在位置 行:1 字符: 7
+ $b = ()
+ ~
“(”后面应为表达式。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedExpression
PS C:\Users\Administrator> $a.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS C:\Users\Administrator>
3.@在以下用法不一样(hashtable;也叫关联数组);并且是必选的
$a = {"Name"="xiamingliang";"Age"=18;"City"="ShangHai"} #这是错误的写法
$b = @{"Name"="xiamingliang";"Age"=18;"City"="ShangHai"}
PS C:\Users\Administrator> $a = {"Name"="xiamingliang";"Age"=18;"City"="ShangHai"}
所在位置 行:1 字符: 7
+ $a = {"Name"="xiamingliang";"Age"=18;"City"="ShangHai"}
+ ~~~~~~
赋值表达式无效。赋值运算符输入必须是能够接受赋值的对象,例如变量或属性。
所在位置 行:1 字符: 29
+ $a = {"Name"="xiamingliang";"Age"=18;"City"="ShangHai"}
+ ~~~~~
赋值表达式无效。赋值运算符输入必须是能够接受赋值的对象,例如变量或属性。
所在位置 行:1 字符: 38
+ $a = {"Name"="xiamingliang";"Age"=18;"City"="ShangHai"}
+ ~~~~~~
赋值表达式无效。赋值运算符输入必须是能够接受赋值的对象,例如变量或属性。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvalidLeftHandSide
PS C:\Users\Administrator> $b = @{"Name"="xiamingliang";"Age"=18;"City"="ShangHai"}
PS C:\Users\Administrator> $b
Name Value
---- -----
Name xiamingliang
Age 18
City ShangHai
PS C:\Users\Administrator> $b.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Hashtable System.Object
PS C:\Users\Administrator>
4.@可以强制将值设置为数组,即使对方为null
$a = Get-Process | where name -like 'balabalabala'
PS C:\Users\Administrator\Desktop> $a = Get-Process | where name -like 'balabalabala'
PS C:\Users\Administrator\Desktop> $a
PS C:\Users\Administrator\Desktop> $a.GetType()
不能对 Null 值表达式调用方法。
所在位置 行:1 字符: 1
+ $a.GetType()
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [],RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
~~~~~~~~~~~~
PS C:\Users\Administrator\Desktop>
$b = @(Get-Process | where name -like 'balabalabala')
PS C:\Users\Administrator\Desktop> $b = @(Get-Process | where name -like 'balabalabala')
PS C:\Users\Administrator\Desktop> $b
PS C:\Users\Administrator\Desktop> $b.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS C:\Users\Administrator\Desktop>
5.@还可以用于定义多行字符串
5.1无引号等特殊字符时,两者基本无差别
细微的换行差别除外
$a = "
hello,
world!!
"
$b = @"
hello,
world!!
"@
PS C:\Users\Administrator> $a = "
>> hello,
>> world!!
>> "
PS C:\Users\Administrator>
PS C:\Users\Administrator> $b = @"
>> hello,
>> world!!
>> "@
PS C:\Users\Administrator> $a
hello,
world!!
PS C:\Users\Administrator> $b
hello,
world!!
PS C:\Users\Administrator>
5.2有引号等特殊字符时,必须使用单引号或@或转义字符
$c = '
hello,
world!!"test"
'
$c1 = "
hello,
world!!""test""
"
$c2 = "
hello,
world!!`"test`"
"
$d = @"
hello,
world!!"test"
"@
PS C:\Users\Administrator> $c = '
>> hello,
>> world!!"test"
>> '
PS C:\Users\Administrator>
PS C:\Users\Administrator> $c1 = "
>> hello,
>> world!!""test""
>> "
PS C:\Users\Administrator>
PS C:\Users\Administrator> $c2 = "
>> hello,
>> world!!`"test`"
>> "
PS C:\Users\Administrator>
PS C:\Users\Administrator> $d = @"
>> hello,
>> world!!"test"
>> "@
PS C:\Users\Administrator> $c
hello,
world!!"test"
PS C:\Users\Administrator> $c1
hello,
world!!"test"
PS C:\Users\Administrator> $c2
hello,
world!!"test"
PS C:\Users\Administrator> $d
hello,
world!!"test"
PS C:\Users\Administrator>
PS C:\Users\Administrator>
5.3在变量使用上两者基本无差别
$str = "test for string."
$a = "
hello,
world!!$str
"
$b = @"
hello,
world!!$str
"@
PS C:\Users\Administrator> $str = "test for string."
PS C:\Users\Administrator> $a = "
>> hello,
>> world!!$str
>> "
PS C:\Users\Administrator>
PS C:\Users\Administrator> $b = @"
>> hello,
>> world!!$str
>> "@
PS C:\Users\Administrator>
PS C:\Users\Administrator> $a
hello,
world!!test for string.
PS C:\Users\Administrator> $b
hello,
world!!test for string.
PS C:\Users\Administrator>
PS C:\Users\Administrator>
$str = "test for string1."
$c = "
hello,
world!!{0}
" -f $str
$d = @"
hello,
world!!{0}
"@ -f $str
PS C:\Users\Administrator> $str = "test for string1."
PS C:\Users\Administrator> $c = "
>> hello,
>> world!!{0}
>> " -f $str
PS C:\Users\Administrator>
PS C:\Users\Administrator> $d = @"
>> hello,
>> world!!{0}
>> "@ -f $str
PS C:\Users\Administrator>
PS C:\Users\Administrator> $c
hello,
world!!test for string1.
PS C:\Users\Administrator> $d
hello,
world!!test for string1.
PS C:\Users\Administrator>
PS C:\Users\Administrator>
【封面图。。。】
文章若有纰漏处,还望大家及时指正...