Ustawianie ochrony dostępu do zmiennych, aliasów i funkcji przy użyciu modyfikatora zakresu
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}