Простое указание $Using:exclude
в командлете Where-Object не работает, потому что он находится во вложенном блоке сценария.
В вашем случае Using:folder
работает, потому что это локальная переменная, непосредственно переданная Invoke-Command
блоку сценария.
Но "Using:exclude
передается в блок сценария для Where-Object
, который сам вложен в блок сценария для Invoke-Command
.
$Using
позволяет передавать локальные переменные в блоки сценариев только на один уровень, а не в блоки сценариев, вложенные дальше. Это поведение не является специфическим для Where-Object
блока сценария, любой командлет, у которого есть параметр, принимающий блок сценария, ведет себя так, когда он находится внутри блока сценария Invoke-Command
.
К сожалению, я не думаю, что такое поведение задокументировано.
Раскомментируя $Using:exclude
в начале Invoke-Command
блока сценария, вы фактически объявляете переменную $exclude
внутри удаленного сеанса. Таким образом, в этом случае $exclude
становится локальной переменной внутри Invoke-Command
блока сценария и может быть передана на один уровень дальше, во вложенный Where-Object
блок сценария.
Вот почему это работает, когда вы раскомментируете $Using:exclude
в начале Invoke-Command
блока сценария, это обходной путь для поведения $Using
.
Для официальной справочной информации об этом запуске:
Get-Help about_remote_variables -Full
person
Mathieu Buisson
schedule
09.08.2014
New-PSSession : [localhost] Beim Verbinden mit dem Remoteserver "localhost" ist folgender Fehler aufgetreten: Zugriff verweigert
- person Timo   schedule 14.05.2020Administrator
, чтобы начатьpssession
. Другой вопрос: где раскомментировать, это уже раскомментировано. - person Timo   schedule 14.05.2020