Windows Server 2008 R2에서 PowerShell 스크립트 실행 문제 해결

PowerShell

PowerShell 스크립트 실행 제한 문제 해결

Windows Server 2008 R2로 작업할 때 사용자는 시스템에서 PowerShell 스크립트 실행이 비활성화되었음을 나타내는 오류가 발생할 수 있습니다. 이 문제는 실행 정책을 제한 없음으로 설정한 후에도 cmd.exe를 통해 스크립트를 실행하려고 할 때 발생할 수 있습니다.

실행 정책이 무제한으로 설정되어 있음을 확인했음에도 불구하고 스크립트가 여전히 실행되지 않아 좌절감을 느끼고 진행을 방해할 수 있습니다. 이 가이드에서는 이 문제의 일반적인 원인을 살펴보고 성공적인 스크립트 실행을 보장하는 단계를 제공합니다.

명령 설명
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force 현재 PowerShell 세션에 대해 스크립트 실행 정책을 일시적으로 우회로 설정하여 모든 스크립트를 제한 없이 실행할 수 있도록 합니다.
powershell -File .\Management_Install.ps1 명령줄에서 지정된 PowerShell 스크립트 파일을 실행합니다.
New-SelfSignedCertificate 신뢰할 수 있는 실행을 위해 PowerShell 스크립트에 서명하는 데 사용할 수 있는 새로운 자체 서명 인증서를 만듭니다.
Export-Certificate 인증서를 파일로 내보낸 후 다른 인증서 저장소로 가져올 수 있습니다.
Import-Certificate 신뢰할 수 있는 게시자 또는 루트 인증 기관과 같은 지정된 인증서 저장소로 인증서를 가져옵니다.
Set-AuthenticodeSignature 지정된 인증서로 PowerShell 스크립트에 서명하여 스크립트 서명 정책이 활성화된 시스템에서 실행할 수 있도록 합니다.

PowerShell에서 스크립트 실행 정책 이해 및 구현

제공된 스크립트는 Windows Server 2008 R2에서 비활성화된 PowerShell 스크립트 실행 문제를 해결하는 것을 목표로 합니다. 첫 번째 스크립트는 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force를 사용하여 현재 PowerShell 세션에 대한 실행 정책을 Bypass로 설정합니다. 이 명령을 사용하면 모든 스크립트를 일시적으로 제한 없이 실행할 수 있습니다. 그런 다음 스크립트는 Management_Install.ps1 스크립트가 포함된 디렉터리로 이동하고 powershell .Management_Install.ps1을 사용하여 이를 실행합니다. 이 접근 방식을 사용하면 실행 정책 변경이 일시적일 뿐이며 시스템의 전반적인 보안 상태에 영향을 주지 않습니다.

배치 파일인 두 번째 스크립트도 실행 정책을 Bypass로 설정하지만 명령줄에서 이를 수행합니다. 이를 달성하기 위해 powershell -Command "Set-ExecutionPolicy Bypass -Scope Process -Force"를 사용합니다. 실행 정책을 변경한 후 스크립트는 스크립트 디렉터리로 이동하고 powershell -File .Management_Install.ps1을 사용하여 PowerShell 스크립트를 실행합니다. 배치 스크립트는 명령 프롬프트 창을 열어두어 사용자가 출력이나 오류 메시지를 볼 수 있도록 하는 pause 명령으로 끝납니다. 이 방법은 프로세스를 자동화하고 이를 더 큰 배치 프로세스에 통합하는 데 유용합니다.

PowerShell의 스크립트 서명 및 보안

세 번째 스크립트 예는 더 엄격한 실행 정책을 준수하기 위해 PowerShell 스크립트에 서명하는 방법을 보여줍니다. 먼저 New-SelfSignedCertificate를 사용하여 자체 서명된 인증서를 생성합니다. 그런 다음 이 인증서는 Export-Certificate를 사용하여 내보내고 Import-Certificate를 사용하여 신뢰할 수 있는 인증서 저장소로 가져올 수 있습니다. 인증서를 TrustedPublisher 및 루트 저장소로 가져오면 시스템은 이 인증서로 서명된 스크립트를 신뢰합니다. 그런 다음 Management_Install.ps1 스크립트는 Set-AuthenticodeSignature를 사용하여 서명됩니다.

스크립트 서명은 신뢰할 수 있는 스크립트만 시스템에서 실행될 수 있도록 보장하여 추가 보안 계층을 제공합니다. 이 접근 방식은 실행 정책이 AllSigned 또는 RemoteSigned로 설정된 엄격한 보안 요구 사항이 있는 환경에서 특히 유용합니다. 스크립트에 서명함으로써 관리자는 스크립트가 변조되지 않았으며 신뢰할 수 있는 소스에서 나온 것인지 확인할 수 있으므로 잠재적인 보안 위험을 완화할 수 있습니다. 이 방법은 보안과 기능을 결합하여 시스템 무결성을 유지하면서 필요한 스크립트를 실행할 수 있도록 합니다.

PowerShell에서 실행 정책을 우회로 설정

파워셸 스크립트

# Ensure the script execution policy is set to Bypass
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force

# Navigate to the script directory
cd "C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts"

# Execute the PowerShell script
powershell .\Management_Install.ps1

배치 스크립트를 사용하여 실행 정책 수정 및 PowerShell 스크립트 실행

배치 스크립트

@echo off

:: Set PowerShell execution policy to Bypass
powershell -Command "Set-ExecutionPolicy Bypass -Scope Process -Force"

:: Navigate to the script directory
cd "C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts"

:: Run the PowerShell script
powershell -File .\Management_Install.ps1

pause

서명된 PowerShell 스크립트 만들기

서명이 포함된 PowerShell 스크립트

# Sample script content
Write-Output "Executing Management Install Script"

# Save this script as Management_Install.ps1

# To sign the script, follow these steps:
# 1. Create a self-signed certificate (if you don't have one)
$cert = New-SelfSignedCertificate -DnsName "PowerShellLocalCert" -CertStoreLocation "Cert:\LocalMachine\My"

# 2. Export the certificate to a file
Export-Certificate -Cert $cert -FilePath "C:\PowerShellLocalCert.cer"

# 3. Import the certificate to Trusted Publishers and Trusted Root Certification Authorities
Import-Certificate -FilePath "C:\PowerShellLocalCert.cer" -CertStoreLocation "Cert:\LocalMachine\TrustedPublisher"
Import-Certificate -FilePath "C:\PowerShellLocalCert.cer" -CertStoreLocation "Cert:\LocalMachine\Root"

# 4. Sign the script with the certificate
Set-AuthenticodeSignature -FilePath .\Management_Install.ps1 -Certificate $cert

스크립트 실행 정책 준수 및 시스템 보안 보장

Windows Server 2008 R2를 관리할 때는 PowerShell에서 사용할 수 있는 다양한 실행 정책과 이러한 정책이 스크립트 실행에 미치는 영향을 이해하는 것이 중요합니다. PowerShell 실행 정책은 잠재적으로 유해한 스크립트의 실행을 방지하도록 설계되었습니다. 네 가지 주요 정책은 Restricted, AllSigned, RemoteSigned 및 Unrestricted입니다. 제한됨은 기본 정책이며 스크립트 실행을 허용하지 않습니다. AllSigned에서는 모든 스크립트와 구성 파일이 신뢰할 수 있는 게시자의 서명을 받아야 합니다. RemoteSigned를 사용하려면 인터넷에서 다운로드한 모든 스크립트와 구성 파일에 신뢰할 수 있는 게시자의 서명이 필요하지만, 로컬에서 생성된 스크립트는 서명 없이 실행할 수 있습니다.

이러한 정책을 이해하면 관리자가 환경에 적합한 보안 수준을 선택하는 데 도움이 됩니다. 스크립트를 정기적으로 실행해야 하는 시나리오에서는 정책을 제한 없음으로 설정하면 모든 스크립트가 제한 없이 실행될 수 있으므로 위험할 수 있습니다. 대신 관리자는 보안과 기능의 균형을 유지하기 위해 RemoteSigned 또는 AllSigned 사용을 고려해야 합니다. 스크립트에 서명하고 인증서를 관리함으로써 관리자는 신뢰할 수 있는 스크립트만 시스템에서 실행되도록 보장하여 악성 코드 실행 위험을 줄일 수 있습니다.

  1. 내 시스템의 현재 실행 정책을 어떻게 확인합니까?
  2. 명령을 사용하십시오 PowerShell에서 현재 실행 정책을 확인합니다.
  3. 모든 사용자에 대한 실행 정책을 영구적으로 변경하려면 어떻게 해야 합니까?
  4. 명령을 사용하십시오 모든 사용자에 대한 실행 정책을 변경합니다.
  5. 정책 제한으로 인해 실행할 수 없는 스크립트가 나타나면 어떻게 해야 합니까?
  6. 다음을 사용하여 일시적으로 정책을 우회로 설정합니다. 그리고 스크립트를 실행하세요.
  7. 무제한 정책을 사용해도 안전합니까?
  8. 무제한을 사용하면 모든 스크립트가 실행될 수 있으므로 보안 위험이 있을 수 있으므로 프로덕션 환경에서는 권장되지 않습니다.
  9. PowerShell 스크립트에 어떻게 서명하나요?
  10. 다음을 사용하여 자체 서명된 인증서를 만듭니다. 그런 다음 다음을 사용하여 스크립트에 서명합니다. .
  11. 스크립트 실행을 신뢰할 수 있는 스크립트로만 제한할 수 있나요?
  12. 예. 실행 정책을 AllSigned 또는 RemoteSigned로 설정하고 스크립트에 서명하면 됩니다.
  13. AllSigned 정책과 RemoteSigned 정책의 차이점은 무엇입니까?
  14. AllSigned에서는 신뢰할 수 있는 게시자의 서명이 모든 스크립트에 필요한 반면, RemoteSigned에서는 서명을 위해 인터넷에서 다운로드한 스크립트만 필요합니다.
  15. 스크립트 서명을 위해 자체 서명된 인증서를 어떻게 생성합니까?
  16. 명령을 사용하십시오 자체 서명된 인증서를 생성합니다.
  17. 스크립트 실행 정책을 비활성화하면 어떤 보안 위험이 발생합니까?
  18. 스크립트 실행 정책을 비활성화하면 시스템이 악성 스크립트에 노출되어 잠재적인 보안 위반 및 데이터 손실이 발생할 수 있습니다.

Windows Server 2008 R2에서 스크립트를 실행하려면 올바른 PowerShell 실행 정책을 확인하는 것이 중요합니다. 정책을 다음으로 설정 또는 배치 파일을 사용하면 실행 문제를 일시적으로 해결할 수 있지만 스크립트 서명은 보다 안전하고 장기적인 솔루션을 제공합니다. 관리자는 다양한 실행 정책이 보안에 미치는 영향을 인식하고 보안과 운영 요구 사항의 균형을 맞추는 조치를 구현해야 합니다.