programing

Set-Execution Policy가 금지된 경우에도 PowerShell 스크립트를 실행하려면 어떻게 해야 합니까?

skycolor 2023. 9. 9. 09:15
반응형

Set-Execution Policy가 금지된 경우에도 PowerShell 스크립트를 실행하려면 어떻게 해야 합니까?

PowerShell의 Set-ExecutionPolicy 명령이 금지되어 있어 다음과 같이 실행할 수 없습니다.

PS> .\script.ps1 (enter)

"Windows PowerShell ISE" 이외에 PowerShell 스크립트를 실행하는 다른 방법이 있습니까?

추신: 자바의 ProcessBuilder를 사용하여 하나의 PowerShell 명령어를 실행할 수 있었지만 전체 스크립트를 실행하는 방법을 모릅니다.

Java에서 PowerShell 스크립트를 실행하는 데 사용하는 방법은 다음과 같습니다(실행 정책에 관계없이 작동).

powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -File <script_name>

가장 쉬운 이 문제를 해결하는 가장 어리석은 방법은 바로 다음과 같습니다.

gc .\script.ps1 | iex

이것은 PowerShell에서 작동하며, 그것에 대해 신경쓰지 않습니다.ExecutionPolicy. 새로운 선에 주의해야 합니다.지킨다{}s 및 동일 라인에서 유사함, 사용;필요한 곳에

Oisin Grehan은 그의 블로그에 집행 정책을 우회할 수 있는 또 다른 방법을 제공하는 흥미로운 게시물을 가지고 있습니다.셸을 열고 다음을 실행합니다.

function Disable-ExecutionPolicy {
    ($ctx = $executioncontext.gettype().getfield(
        "_context", "nonpublic,instance").getvalue(
            $executioncontext)).gettype().getfield(
                "_authorizationManager", "nonpublic,instance").setvalue(
        $ctx, (new-object System.Management.Automation.AuthorizationManager
                  "Microsoft.PowerShell"))
}
Disable-ExecutionPolicy

이렇게 하면 해당 셸에서 스크립트를 호출할 수 있는 기본 호스트 권한 부여 관리자가 제거됩니다.실행 정책은 실행되는 셸에서만 재정의되므로 여는 각 셸에 대해 이를 실행해야 합니다.

이는 이 질문에 대한 앤디의 답변을 약간 개선한 것입니다.관리자가 GPO에서 제한적인 PowerShell 스크립트 실행 정책을 설정하는 경우(PowerShell 실행 정책이 보안 경계라는 잘못된 개념 하에서) 다음 명령줄을 사용하여 실행 정책이 비활성화된 PowerShell 대화형 세션을 얻을 수 있습니다.

powershell.exe -EncodedCommand ZgB1AG4AYwB0AGkAbwBuACAARABpAHMAYQBiAGwAZQAtAEUAeABlAGMAdQB0AGkAbwBuAFAAbwBsAGkAYwB5AHsAKAAkAGMAdAB4AD0AJABFAHgAZQBjAHUAdABpAG8AbgBDAG8AbgB0AGUAeAB0AC4ARwBlAHQAVAB5AHAAZQAoACkALgBHAGUAdABGAGkAZQBsAGQAKAAiAF8AYwBvAG4AdABlAHgAdAAiACwAIgBuAG8AbgBwAHUAYgBsAGkAYwAsAGkAbgBzAHQAYQBuAGMAZQAiACkALgBHAGUAdABWAGEAbAB1AGUAKAAkAEUAeABlAGMAdQB0AGkAbwBuAEMAbwBuAHQAZQB4AHQAKQApAC4ARwBlAHQAVAB5AHAAZQAoACkALgBHAGUAdABGAGkAZQBsAGQAKAAiAF8AYQB1AHQAaABvAHIAaQB6AGEAdABpAG8AbgBNAGEAbgBhAGcAZQByACIALAAiAG4AbwBuAHAAdQBiAGwAaQBjACwAaQBuAHMAdABhAG4AYwBlACIAKQAuAFMAZQB0AFYAYQBsAHUAZQAoACQAYwB0AHgALAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAdQB0AGgAbwByAGkAegBhAHQAaQBvAG4ATQBhAG4AYQBnAGUAcgAgACIATQBpAGMAcgBvAHMAbwBmAHQALgBQAG8AdwBlAHIAUwBoAGUAbABsACIAKQApAH0AOwBEAGkAcwBhAGIAbABlAC0ARQB4AGUAYwB1AHQAaQBvAG4AUABvAGwAaQBjAHkAOwBpAGYAKABUAGUAcwB0AC0AUABhAHQAaAAgACQAUABSAE8ARgBJAEwARQApAHsALgAgACQAUABSAE8ARgBJAEwARQB9AA== -NoExit

-EncodedCommand다음 코드가 있습니다.

function Disable-ExecutionPolicy{($ctx=$ExecutionContext.GetType().GetField("_context","nonpublic,instance").GetValue($ExecutionContext)).GetType().GetField("_authorizationManager","nonpublic,instance").SetValue($ctx,(New-Object Management.Automation.AuthorizationManager "Microsoft.PowerShell"))};Disable-ExecutionPolicy;if(Test-Path $PROFILE){. $PROFILE}

즉, Andy의 답변에 설명된 함수를 실행하여 실행 정책을 사용하지 않도록 설정한 다음 현재 사용자 프로파일 스크립트가 존재하는 경우 닷 소싱합니다.

언급URL : https://stackoverflow.com/questions/9271681/how-do-i-run-a-powershell-script-even-if-set-executionpolicy-is-banned

반응형