Установить политику выполнения на удаленном компьютере с помощью переменной - PullRequest
0 голосов
/ 15 февраля 2019

У меня проблема с возвратом обратно политики выполнения powershell на удаленном компьютере с использованием переменной.

$RestrykcjaNowa = 'Bypass'
$RestrykcjaZastana = Invoke-Command -ComputerName $Komputer -ScriptBlock { Get-ExecutionPolicy }
$RestrykcjaZastana
Invoke-Command -ComputerName $Komputer -ScriptBlock { Set-ExecutionPolicy -ExecutionPolicy $RestrykcjaNowa -Scope LocalMachine -Force } | Out-Null

Но я получил ошибку

Невозможно привязать аргумент к параметру 'ExecutionPolicy', поскольку он равен нулю

Когда я заменяю переменную $RestrykcjaNowa со значением Обход в последней команде все идет гладко.

Я заметил, что переменная $RestrykcjaZastana не отображается на экране при вызове во 2-й строке кода и имеет тип int но я не могу присвоить значение Обход для целочисленной переменной вручную.

Что не так с моим подходом?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

У вас есть две проблемы для решения:

  1. Политики выполнения не являются строками;это отдельный перечислимый тип, [Microsoft.PowerShell.ExecutionPolicy].Вам нужно будет присвоить их как таковые вашей переменной:

    $RestrykcjaNowa = [Microsoft.PowerShell.ExecutionPolicy]::Bypass
    
  2. На переменные вне блоков скриптов необходимо ссылаться изнутри блока скриптов с помощью using::

    Invoke-Command -ComputerName $Komputer -ScriptBlock { Set-ExecutionPolicy -ExecutionPolicy $using:RestrykcjaNowa -Scope LocalMachine -Force } | Out-Null
    
0 голосов
/ 15 февраля 2019

Переменные не оцениваются при определении Scriptblock.Однако для вашего случая вы можете использовать приведенный ниже код, с помощью которого вы можете передать переменную в скрипт-блок в качестве аргумента:

$RestrykcjaNowa = 'Bypass'
$Komputer = '<Computername>'
$RestrykcjaZastana = Invoke-Command -ComputerName $Komputer -ScriptBlock { Get-ExecutionPolicy }
$RestrykcjaZastana
Invoke-Command -ComputerName $Komputer -ScriptBlock {param($RestrykcjaNowa) Set-ExecutionPolicy -ExecutionPolicy $RestrykcjaNowa -Scope LocalMachine -Force } -ArgumentList $RestrykcjaNowa | Out-Null
...