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 的更新版本。

  1. -- 使用 param 關鍵字來定義遠端命令的參數。參數名稱是預留位置,不需要符合區域變數的名稱。

  2. -- 在命令中使用 param 關鍵字所定義的參數。

  3. -- 使用 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