在 PowerShell 中使用 @ 符号
-
在 PowerShell 中使用
@
符号创建数组 -
在 PowerShell 中使用
@
符号创建哈希表 -
在 PowerShell 中为 Here-Strings 使用
@
符号 -
在 PowerShell 中使用
@
符号对数组进行拼接 -
使用
@
符号在 PowerShell 中用哈希表进行拼接
你可能已经看到 PowerShell 中使用的不同符号,例如 @
、?
、|
、$
、%
和 =
。所有这些符号在命令中都有它们的用途。
本教程将向你展示@
符号在 PowerShell 中的各种用法。
在 PowerShell 中使用 @
符号创建数组
数组子表达式运算符 @()
在 PowerShell 中创建并初始化一个数组。
$array = @('Apple', 'Banana', 'Mango')
$array
输出:
Apple
Banana
Mango
你可以使用 GetType
方法来获取变量的数据类型。
$array.GetType()
输出:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
你可以使用此运算符创建一个数组零个或一个对象。如果括号中没有提供任何值,它将创建一个空数组。
$data = @()
在 PowerShell 中使用 @
符号创建哈希表
哈希表是一种紧凑的数据结构,它存储一个或多个成对的键和值。它也称为字典或关联数组。
在 PowerShell 中创建哈希表的语法以 @
符号开头。键和值包含在 {}
括号中。
下面的示例创建一个包含三个键和值的哈希表。
$hash = @{Name = "Sam"; Age = 21; Address = "Nepal"}
$hash
输出:
Name Value
---- -----
Name Sam
Age 21
Address Nepal
你可以使用 GetType()
方法检查数据类型。
$hash.GetType()
输出:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Hashtable System.Object
如果括号中没有提供键和值,将创建一个空的哈希表。
$hash = @{}
在 PowerShell 中为 Here-Strings 使用 @
符号
@
符号的另一个重要用途是在 PowerShell 中定义此处的字符串。引号在此处字符串中按字面意思解释。
此处字符串可以是单引号或双引号字符串,每端都有@
。它可以有多行文本。
Here-string 带双引号:
@"
Press "Enter" to continue...
Press "X" to quit.
"@
输出:
Press "Enter" to continue...
Press "X" to quit.
此处字符串包含@" "@
之间的所有文本。
Here-带单引号的字符串:
@'
My name is $name.
'@
输出:
My name is $name.
在单引号 here-strings 中,变量按字面意思解释并打印在输出中,但不是在双引号 here-strings 中。
在 PowerShell 中使用@
符号对数组进行拼接
你可以在命令中使用@
符号对数组进行拼接。 @
符号可以使用数组来显示不需要参数名称的位置参数的值。
我们将比较 Copy-Item
cmdlet 的两个示例以将 test.txt
复制到同一目录中的 test2.txt
。
以下示例使用省略了参数名称的基本格式。
-WhatIf
参数显示 cmdlet 运行时会发生什么。cmdlet 未运行。
Copy-Item "test.txt" "test2.txt" -WhatIf
输出:
What if: Performing the operation "Copy File" on target "Item: C:\Users\rhntm\test.txt Destination: C:\Users\rhntm\test2.txt".
现在,让我们使用数组喷射执行相同的操作。此示例在 $ArrayArguments
变量中创建参数值数组。
另一个命令通过将命令中的 $
符号替换为@
来使用 $ArrayArguments
变量。
$ArrayArguments = "test.txt", "test2.txt"
Copy-Item @ArrayArguments -WhatIf
输出:
What if: Performing the operation "Copy File" on target "Item: C:\Users\rhntm\test.txt Destination: C:\Users\rhntm\test2.txt".
使用@
符号在 PowerShell 中用哈希表进行拼接
同样地,你可以使用@
符号来进行哈希表的拼接。
第一个命令创建一个哈希表,以将参数名称和参数值对存储在 $HashArguments
变量中。第二条命令在拼接中使用 $HashArguments
变量,将 $
符号替换为@
。
$HashArguments = @{
Path = "test.txt"
Destination = "test2.txt"
WhatIf = $true
}
Copy-Item @HashArguments
你可以为 -WhatIf
参数提供值 $true
或 $false
。
输出:
What if: Performing the operation "Copy File" on target "Item: C:\Users\rhntm\test.txt Destination: C:\Users\rhntm\test2.txt".
正如你所看到的,它执行了与哈希表拼接相同的操作。