2011-09-21 3 views
2

이게 가능하지 않다면 놀랄 일이 아니지만 여러 빌드 서버에서 실행 정책 (32 비트 powershell 환경)을 설정해야합니다. 스크립트를 작성할 수 있으면 훨씬 더 빠릅니다.스크립트를 사용하여 powershell 실행 정책을 설정할 수 있습니까?

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

은 가시적 인 오류없이 완료되지만 실행 정책은 설정되지 않습니다. 사용자가 실행 정책을 변경하는 스크립트를 실행하도록 속을 수 있다면

나는 그것이 보안 구멍의 비트를 만들 것이라고 생각하지만 어쨌든

감사합니다 질문을 할 thougth


좋습니다 - 그래서 Richard와 Craika는 완전히 정확합니다. 나는 약간 바보입니다. 명령을 다시 시도한 후 - 내가 질문에서 말한 내용에도 불구하고 작동한다는 것을 알았습니다. 나는 32와 64 powershells (즉, 실행 정책을 하나로 설정 한 다음 다른 정책에서 값을 확인) 사이에 섞여 있었음에 틀림 없다.

사과.

+0

스크립트로 정책을 변경하기 위해 스크립트를 실행할 수 있어야하므로이 아이디어에 결함이있는 것 같습니다. – JNK

답변

2

이 작업을 수행 할 수 있지만 강제 실행 정책의 현재 (즉, 스크립트 앞)에서 스크립트가 실행되거나 실행되지 않습니다.

확실한 방법은 신뢰할 수있는 인증서로 스크립트에 서명하는 것입니다.

그러나 서버를 집합 적으로 관리하려면 Active Directory OU 또는 그룹에 넣은 다음 그룹 정책을 사용하여 실행 정책을 설정하십시오.

(그리고 당신은 32 개 및 64 비트 프로세스를 설정해야합니다 잊지 마세요.)

2

귀하의 명령이 작동 (내 컴퓨터에서 작업을 수행) 할 것이다 - 실행 정책은 아무 영향을 미치지 않습니다 powershell.exe의 Command 매개 변수에 직접 전달합니다 (수행 된 경우에도 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 버전을 실행하고 있는지 여부에 달려 있다고 생각합니다.

관련 문제