Ustawianie ochrony dostępu do zmiennych, aliasów i funkcji przy użyciu modyfikatora zakresu

Ukończone

Program Windows PowerShell zapewnia ochronę dostępu do zmiennych, aliasów, funkcji i dysków programu Windows PowerShell, ograniczając miejsca, w których można je zmienić i odczytać. Wymuszając kilka prostych reguł przy użyciu zakresów programu Windows PowerShell, upewnij się, że nie przypadkowo zmieniasz elementu, który nie powinien zostać zmieniony. Podstawowe reguły zakresów to:

  • Jeśli nie jawnie ustawisz go jako prywatny, elementy uwzględnione w zakresie są widoczne w zakresie, w którym został utworzony i w dowolnym zakresie podrzędnym. Można użyć zmiennych, aliasów, funkcji lub dysków programu Windows PowerShell w co najmniej jednym zakresie.
  • Elementy tworzone w zakresie można zmienić tylko w zakresie, w którym element został utworzony, chyba że jawnie określono inny zakres.

Jeśli utworzysz element w zakresie, a element ma taką samą nazwę jak element w innym zakresie, oryginalny element może zostać ukryty w nowym elemencie. Jednak nie jest on zastępowany ani zmieniany.

Zmienne lokalne można używać w poleceniach zdalnych, ale należy wskazać, że zmienna jest zdefiniowana w sesji lokalnej. Program Windows PowerShell zakłada, że zmienne używane w poleceniach zdalnych są zdefiniowane w sesji, w której jest uruchamiane polecenie.

Modyfikator zakresu $Using

Jak wspomniano wcześniej, począwszy od programu Windows PowerShell 3.0, można zaimplementować $Using: modyfikator zakresu, aby zidentyfikować zmienną lokalną w poleceniu zdalnym. Jest to specjalny modyfikator zakresu i jest najprostszym sposobem odwołowania się do zmiennej lokalnej w poleceniu zdalnym. Ta technika przekazuje wartości zmiennych do komputera zdalnego i w związku z tym obejmuje mniejsze przetwarzanie na używanych hostach. Domyślnie zmienne w poleceniach zdalnych są definiowane w sesji zdalnej.

Składnia using to $Using:.

W poniższym przykładzie zmienna $ps jest tworzona w sesji lokalnej, ale jest używana w sesji, w której jest uruchamiane polecenie. Modyfikator $Using: zakresu identyfikuje $ps się jako zmienna lokalna:

$ps = "Windows PowerShell" 

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

Modyfikator zakresu można również zastosować $Using: w programach PSSessions, takich jak w poniższym przykładzie:

$s = New-PSSession -ComputerName LON-DC1

$ps = "Windows PowerShell"

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