Настройка защиты доступа к переменным, псевдонимам и функциям с помощью модификатора области
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}
Модификатор области $Using:
можно также применять в сеансах PSSession, например в следующем примере:
$s = New-PSSession -ComputerName LON-DC1
$ps = "Windows PowerShell"
Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $Using:ps}