about_Remote_Variables
適用於: Windows PowerShell 4.0, Windows PowerShell 5.0
主題
about_Remote_Variables
簡短描述
說明如何在遠端命令中使用區域和遠端變數。
詳細描述
您可以在執行於遠端電腦的命令中使用變數。只要將值指派給變數,然後使用變數來取代值即可。
預設會假設遠端命令中的變數已定義在執行命令的工作階段中。您也可以使用定義在本機工作階段中的變數,但您必須在命令中將其識別為區域變數。
使用遠端變數
Windows PowerShell® 會假設遠端命令中使用的變數已定義在執行命令的工作階段中。
在下列範例中,$ps 變數已定義在執行 Get-WinEvent 命令的暫時工作階段中。
PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {$ps = "Windows PowerShell"; Get-WinEvent -LogName $ps}
同樣地,當命令在持續性工作階段 (PSSession) 中執行時,遠端變數必須定義在相同的 PSSession 中。
PS C:\>$s = New-PSSession -ComputerName S1
PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {$ps = "Windows PowerShell"}
PS C:\>Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $ps}
使用區域變數
您也可以在遠端命令中使用區域變數,但您必須指出變數是定義在本機工作階段中。
從 Windows PowerShell 3.0 開始,您可以使用 Using 範圍修飾詞,在遠端命令中識別區域變數。
Using 的語法如下所示:
The syntax is:
$Using:<VariableName>
在下列範例中,$ps 變數是在本機工作階段中建立,但是用在執行命令的工作階段中。Using 範圍修飾詞會將 $ps 識別為區域變數。請在這裡插入區段主體。
PS C:\>$ps = "Windows PowerShell"
PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {Get-WinEvent -LogName $Using:ps}
您也可以在 PSSessions 中使用 Using 範圍修飾詞。
PS C:\>$s = New-PSSession -ComputerName S1
PS C:\>$ps = "Windows PowerShell"
PS C:\>Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $Using:ps}
在 WINDOWS POWERSHELL 2.0 中使用區域變數
若要在遠端命令中使用區域變數,您可以為遠端命令定義參數,並使用 Invoke-Command Cmdlet 的 ArgumentList 參數,將區域變數指定為參數值。
此命令格式適用於 Windows PowerShell 2.0 或 Windows PowerShell 的更新版本。
-- 使用 param 關鍵字來定義遠端命令的參數。參數名稱是預留位置,不需要符合區域變數的名稱。
-- 在命令中使用 param 關鍵字所定義的參數。
-- 使用 Invoke-Command Cmdlet 的 ArgumentList 參數,將區域變數指定為參數值。
例如,下列命令會在本機工作階段中定義 $ps 變數,然後將其用在遠端命令中。該命令會使用 $log 做為參數名稱,並使用區域變數 $ps 做為其值。
C:\PS>$ps = "Windows PowerShell"
C:\PS>Invoke-Command -ComputerName S1 -ScriptBlock {param($log) Get-WinEvent -logname $log} -ArgumentList $ps
關鍵字
about_Using
另請參閱
about_Remote
about_PSSessions
about_Scopes
Enter-PSSession
Invoke-Command
New-PSSession