PowerShell 스크립트가 실행되지 않는 이유는 무엇입니까?
간단한 배치 파일을 PowerShell 스크립트로 작성했는데 실행 시 오류가 발생합니다.
내 경로에 있는 스크립트 디렉토리에 있습니다.다음과 같은 오류가 발생합니다.
이 시스템에서 스크립트 실행을 사용할 수 없으므로 로드할 수 없습니다.서명에 대한 도움말 보기를 참조하십시오.
제가 도움을 요청했지만, 도움이 되지 않습니다.
IIRC(PowerShell)가 서명된 스크립트만 실행하는 PowerShell의 기본 보안 수준일 수 있습니다.
입력해 보십시오.
set-executionpolicy remotesigned
그러면 PowerShell에서 로컬(즉, 로컬 드라이브)의 서명되지 않은 스크립트를 실행할 수 있습니다.
그런 다음 스크립트를 다시 실행해 보십시오.
당신은 뛰어야 합니다.Set-ExecutionPolicy
:
Set-ExecutionPolicy Restricted <-- Will not allow any powershell scripts to run. Only individual commands may be run.
Set-ExecutionPolicy AllSigned <-- Will allow signed powershell scripts to run.
Set-ExecutionPolicy RemoteSigned <-- Allows unsigned local script and signed remote powershell scripts to run.
Set-ExecutionPolicy Unrestricted <-- Will allow unsigned powershell scripts to run. Warns before running downloaded scripts.
Set-ExecutionPolicy Bypass <-- Nothing is blocked and there are no warnings or prompts.
사용:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
항상 위 명령을 사용하여 현재 세션에서 PowerShell을 실행하도록 설정합니다.
PowerShell을 다음과 같이 호출하여 이 오류를 무시할 수 있었습니다.
powershell -executionpolicy bypass -File .\MYSCRIPT.ps1
즉, 다음을 추가했습니다.-executionpolicy bypass
내가 대본을 실행한 방식으로.
이 작업은 Windows 7 서비스 팩 1에서 작동했습니다.PowerShell을 처음 사용하기 때문에 이 작업을 수행할 때 주의해야 할 사항이 있을 수 있습니다.
[Edit 2017-06-26] Windows 10 및 Windows 2012 R2를 포함한 다른 시스템에서도 문제없이 이 기술을 사용하고 있습니다.
여기 제가 지금 사용하고 있는 것이 있습니다.이렇게 하면 스크립트를 클릭하여 실수로 스크립트를 실행할 수 없습니다.스케줄러에서 실행할 때 "스케줄러"라는 하나의 인수를 추가하면 프롬프트가 무시됩니다.
또한 PowerShell의 출력을 볼 수 있도록 마지막에 창이 일시 중지됩니다.
if NOT "%1" == "scheduler" (
@echo looks like you started the script by clicking on it.
@echo press space to continue or control C to exit.
pause
)
C:
cd \Scripts
powershell -executionpolicy bypass -File .\rundps.ps1
set psexitcode=%errorlevel%
if NOT "%1" == "scheduler" (
@echo Powershell finished. Press space to exit.
pause
)
exit /b %psexitcode%
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
위의 명령은 다음 오류가 발생하는 경우에도 작동했습니다.
Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.
또한 당신이 포함시킬 필요가 있을지도 모른다는 것을 알아둘 가치가 있습니다..\
스크립트 이름 앞에 있습니다.예:
.\scriptname.ps1
명령어set-executionpolicy unrestricted
생성한 스크립트를 로그인한 사용자로 실행할 수 있습니다.실행 정책 설정을 다음을 사용하여 서명된 상태로 다시 설정하십시오.set-executionpolicy signed
로그아웃하기 전에 명령을 입력합니다.
실행 정책을 적절한 방법으로 우회할 수 있습니다(명령 프롬프트 내부).
type file.ps1 | powershell -command -
또는 파워셸 내부:
gc file.ps1|powershell -c -
Windows 10에서: myfile.ps1의 보안 속성 변경을 클릭하고 myfile.ps1의 속성을 마우스 오른쪽 버튼으로 클릭하여 "액세스 허용"을 변경합니다.
실행 정책을 우회하는 것이 이상적일 것입니다. 예를 들어 다음과 같습니다.
powershell -executionpolicy bypass -File .\MYSCRIPT.ps1
안타깝게도 그룹 정책을 사용하면 이러한 문제를 방지할 수 있습니다.해결 방법으로 PowerShell에서 다음을 실행하여 스크립트를 Base64로 인코딩할 수 있습니다.
[Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes((Get-Content .\MYSCRIPT.ps1)))
그런 다음 다음과 같이 결과를 실행합니다.
powershell.exe -EncodedCommand "put-your-base64-string-here"
주의: 매개 변수가 필요한 스크립트에서는 작동하지 않습니다.
언급URL : https://stackoverflow.com/questions/10635/why-are-my-powershell-scripts-not-running
'programing' 카테고리의 다른 글
쿼리를 사용하여 기존 테이블에 대한 SQL 생성 스크립트 생성 (0) | 2023.05.25 |
---|---|
Eclipse 출력 콘솔의 용량을 늘리려면 어떻게 해야 합니까? (0) | 2023.05.25 |
BOM(바이트 순서 표시) 없이 텍스트 파일을 쓰시겠습니까? (0) | 2023.05.25 |
Postgre를 종료하는 방법SQL 명령줄 유틸리티: psql (0) | 2023.05.25 |
git 원격 다른 SSH 포트와 함께 추가 (0) | 2023.05.25 |