使用範圍修飾詞,將存取保護設定為變數、別名和函式

已完成

Windows PowerShell 限制可變更和讀取的位置,以提供變數、別名、函數和 Windows PowerShell 磁碟機的存取保護。 藉由使用 Windows PowerShell 範圍強制執行一些簡單規則,可確保您不意外變更不應變更的項目。 範圍的基本規則如下:

  • 除非您明確將其設為私人,否則您在範圍中包含的項目會顯示在建立範圍和任何子範圍中。 您可以在一或多個範圍中使用變數、別名、函式或 Windows PowerShell 磁碟機。
  • 除非您明確規定不同的範圍,否則您在範圍內建立的項目只能在建立項目的範圍中變更。

如果您在範圍中建立項目,且項目的名稱與不同範圍中的項目相同,則原始項目可能會隱藏在新項目底下。 不過,項目不會被覆寫或變更。

您可以在遠端命令中使用區域變數,但必須指出變數是在本地工作階段中定義的。 Windows PowerShell 會假設遠端命令中使用的變數是在命令執行所在的工作階段中定義。

$Using:範圍修飾詞

如先前所述,從 Windows PowerShell 3.0 開始,您可以實作 $Using: 範圍修飾詞,以識別遠端命令中的區域變數。 這是特殊的範圍修飾詞,也是在遠端命令中參考區域變數的最簡單方式。 這項技術會將變數值傳遞至遠端電腦,因此在所使用主機之間的處理較少。 預設會假設遠端命令中的變數已在遠端工作階段中定義。

Using 的語法為 $Using:

在下列範例中,$ps 變數是在本地工作階段中建立,但在命令執行所在的工作階段中使用。 $Using: 範圍修飾詞會將 $ps 識別為區域變數:

$ps = "Windows PowerShell" 

Invoke-Command -ComputerName LON-DC1 -ScriptBlock {Get-WinEvent -LogName $Using:ps}

您也可以在 PSSession 中套用 $Using: 範圍修飾詞,例如下列範例:

$s = New-PSSession -ComputerName LON-DC1

$ps = "Windows PowerShell"

Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $Using:ps}