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
'programing' 카테고리의 다른 글
SQL 쿼리는 'like'와 함께 작동하지만 일부 ID의 경우 동등하지 않습니다. (0) | 2023.09.09 |
---|---|
npm에서 패키지를 찾을 수 없습니다.json (0) | 2023.09.09 |
TextView를 스타일리시하여 모든 문자를 대문자로 만드는 방법이 있습니까? (0) | 2023.09.09 |
jQuery로 페이지 스크롤을 프로그래밍 방식으로 비활성화하는 방법 (0) | 2023.09.09 |
MySQL 온라인 테스트 도구 (0) | 2023.09.09 |