Могу ли я установить политику выполнения powershell, используя скрипт? - PullRequest
2 голосов
/ 21 сентября 2011

Я не удивлюсь, если это невозможно, но мне нужно установить политику выполнения (в 32-битной среде powershell) на нескольких серверах сборки - было бы намного быстрее, если бы я мог написать это, но моя текущая попытка

%SystemRoot%\syswow64\WindowsPowerShell\v1.0\
    powershell.exe -Version 2 
    -Command "& {Set-ExecutionPolicy -ExecutionPolicy RemoteSigned}"

завершается без видимой ошибки, но политика выполнения не устанавливается.

Полагаю, это создаст небольшую дыру в безопасности, если пользователи смогут обманом запустить скрипт, который изменил их политику выполнения, но я все равно задам вопрос

Спасибо


ОК - так что Ричард и Крейка совершенно правы, и я немного глуп. После повторной попытки ввода команды я обнаружил, что она работает (несмотря на то, что я сказал в вопросе). Я полагаю, что я путался между 32 и 64 PowerShell (т.е. установил политику выполнения в одном и затем проверил значение в другом).

Извинения.

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Ваша команда будет работать (и работает на моем компьютере) - политика выполнения не повлияет на то, что вы передадите непосредственно в параметр Command powershell.exe (и даже если это произойдет, есть также параметр ExecutionPolicy).Вы определенно работаете с 64-битным сеансом?

Если вы действительно хотите написать сценарий, вы можете запустить его с локальной рабочей станции:

$LaunchLine = 'powershell.exe -Version 2 -Command "& {Set-ExecutionPolicy -ExecutionPolicy RemoteSigned}"'

$ComputerList = "PC01", "PC02"
foreach($Computer in $ComputerList)
{
    [String]$wmiPath = "\\{0}\root\cimv2:win32_process" -f $computer

    try
    {
        [wmiclass]$Executor = $wmiPath
        $executor.Create($LaunchLine)
    }
    catch
    {
        continue;
    }
}

Он создает новый процесс вкаждый компьютер в $ ComputerList и выполняет вашу команду.Как я уже сказал, ваша команда работает на моем компьютере.Я думаю, что проблема заключается в том, работает ли на самом деле версия PowerShell, которую вы используете.

2 голосов
/ 21 сентября 2011

Вы можете сделать это, но сценарий будет запускаться или не запускаться в соответствии с текущей (т.е. перед сценарием) политикой принудительного выполнения.

Очевидный подход состоит в том, чтобы подписать сценарий довереннымсертификат.

Однако, если вы хотите управлять серверами коллективно, почему бы не поместить их в подразделение или группу Active Directory, а затем использовать групповую политику для установки политики выполнения?

(И нене забудьте, что вам нужно установить его как для 32-, так и для 64-битных процессов.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...