在 PowerShell 中遠端處理 $Using 變數範圍

Rohan Timalsina 2022年6月7日
在 PowerShell 中遠端處理 $Using 變數範圍

在 PowerShell 中使用遠端命令時,有時你可能希望在遠端會話中使用本地變數。但是如果你在遠端命令中使用區域性變數,它會返回一個錯誤,因為該變數不是在遠端會話中建立的。

預設情況下,PowerShell 期望遠端命令中的變數在命令執行的遠端會話中定義。Using 是一個特殊的作用域修飾符,允許你在遠端命令中使用區域性變數。

Using 範圍修飾符將本地會話中定義的變數標識為遠端命令中的本地變數。它是在 PowerShell 3.0 中引入的。

本教程將教你使用 PowerShell 中的 Using 在遠端命令中使用區域性變數。

在 PowerShell 中使用 Using 範圍修飾符

Using 範圍修飾符的語法是:

$Using:VariableName

Using 範圍修飾符在遠端執行的命令中受支援,從 Invoke-Command 開始使用 ComputerNameHostNameSSHConnectionSession 引數。

以下指令碼顯示了在本地計算機中定義並在遠端會話中使用的 $test 變數。

$test = "C:\New\complex"
Invoke-Command -ComputerName remotePC -ScriptBlock {
  Get-ChildItem $Using:test
}

第一個命令將目錄 C:\New\complex 的路徑儲存在本地計算機的 $test 變數中。第二個命令在遠端計算機上執行帶有本地變數 $testGet-ChildItem 命令。

因此,它會列印遠端計算機目錄 C:\New\complex 中存在的專案。

輸出:

Directory: C:\New\complex
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        20-12-2021     19:31         112125 architecture of aqps.png
-a----        20-12-2021     21:32          33148 formula.png
-a----        20-12-2021     21:30          55621 modules.png
-a----        20-12-2021     16:35         190485 output paper.png

你還可以在 PSSession 中使用 Using 範圍修飾符。

在以下示例中,兩個變數 $a$b 在本地會話中建立並在遠端會話中使用。 $result 變數在遠端會話中定義,它儲存 $a$b 中的值的乘積。

$ps = New-PSSession -ComputerName remotePC
$a=5
$b=6
Invoke-Command -Session $ps -ScriptBlock {
$result = $Using:a*$Using:b
Write-Host The result is $result
}

輸出:

The result is 30

我們希望本教程能幫助你瞭解如何在遠端命令中對區域性變數使用 Using 範圍修飾符。有關詳細資訊,請閱讀 about_Remote_Variables

作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website