Настройка защиты доступа к переменным, псевдонимам и функциям с помощью модификатора области

Завершено

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}