在 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".
正如你所看到的,它執行了與雜湊表拼接相同的操作。