Resolució de problemes de les restriccions d'execució de l'script de PowerShell
Quan es treballa amb Windows Server 2008 R2, els usuaris poden trobar un error que indica que l'execució d'scripts de PowerShell està desactivada al sistema. Aquest problema pot sorgir quan s'intenta executar un script mitjançant cmd.exe, fins i tot després d'establir la política d'execució a Sense restriccions.
Tot i confirmar que la política d'execució està definida en Sense restriccions, és possible que els scripts no s'executin, causant frustració i dificultant el progrés. Aquesta guia explorarà les causes comunes d'aquest problema i proporcionarà els passos per garantir l'execució correcta de l'script.
Comandament | Descripció |
---|---|
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force | Estableix temporalment la política d'execució de seqüències d'ordres en Bypass per a la sessió de PowerShell actual, permetent l'execució de tots els scripts sense restriccions. |
powershell -File .\Management_Install.ps1 | Executa el fitxer d'script de PowerShell especificat des de la línia d'ordres. |
New-SelfSignedCertificate | Crea un certificat autofirmat nou, que es pot utilitzar per signar scripts de PowerShell per a una execució de confiança. |
Export-Certificate | Exporta un certificat a un fitxer, que després es pot importar a altres magatzems de certificats. |
Import-Certificate | Importa un certificat a un magatzem de certificats especificat, com ara editors de confiança o autoritats de certificació arrel. |
Set-AuthenticodeSignature | Signa un script de PowerShell amb un certificat especificat, cosa que permet que s'executi en sistemes amb polítiques de signatura d'scripts activades. |
Comprensió i implementació de polítiques d'execució d'scripts a PowerShell
Els scripts proporcionats tenen com a objectiu solucionar el problema de l'execució d'scripts de PowerShell desactivada a Windows Server 2008 R2. El primer script estableix la política d'execució a Bypass per a la sessió de PowerShell actual mitjançant Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force. Aquesta ordre permet que tots els scripts s'executin temporalment sense restriccions. A continuació, l'script navega al directori que conté l'script Management_Install.ps1 i l'executa amb powershell .Management_Install.ps1. Aquest enfocament garanteix que el canvi de política d'execució només sigui temporal i no afecti la postura general de seguretat del sistema.
El segon script, un fitxer per lots, també estableix la política d'execució a Bypass, però ho fa des de la línia d'ordres. Utilitza powershell -Command "Set-ExecutionPolicy Bypass -Scope Process -Force" per aconseguir-ho. Després de canviar la política d'execució, l'script navega al directori de l'script i executa l'script de PowerShell mitjançant powershell -File .Management_Install.ps1. L'script per lots acaba amb una ordre pause per mantenir oberta la finestra d'indicador d'ordres, permetent a l'usuari veure qualsevol missatge de sortida o error. Aquest mètode és útil per automatitzar el procés i integrar-lo en processos de lots més grans.
Signatura d'scripts i seguretat a PowerShell
El tercer exemple d'script demostra com signar un script de PowerShell per complir amb polítiques d'execució més estrictes. Primer, es crea un certificat autofirmat amb New-SelfSignedCertificate. Aquest certificat es pot exportar amb Export-Certificate i importar-lo a botigues de certificats de confiança mitjançant Import-Certificate. En importar el certificat a les botigues TrustedPublisher i Root, el sistema confiarà en els scripts signats amb aquest certificat. L'script Management_Install.ps1 es signa després amb Set-AuthenticodeSignature.
La signatura d'scripts garanteix que només es poden executar scripts de confiança al sistema, proporcionant una capa addicional de seguretat. Aquest enfocament és especialment útil en entorns amb requisits de seguretat estrictes on les polítiques d'execució s'estableixen a AllSigned o RemoteSigned. En signar l'script, els administradors poden assegurar-se que els scripts no es manipulin i provenen d'una font de confiança, mitigant així els possibles riscos de seguretat. Aquest mètode combina seguretat amb funcionalitat, permetent que els scripts necessaris s'executin mentre es manté la integritat del sistema.
Configuració de la política d'execució per ignorar a PowerShell
Script de 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
Ús de Batch Script per modificar la política d'execució i executar PowerShell Script
Script per lots
@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
Creació d'un script de PowerShell signat
Script de PowerShell amb signatura
# 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
Garantir el compliment de la política d'execució d'scripts i la seguretat del sistema
Quan gestioneu Windows Server 2008 R2, és fonamental entendre les diferents polítiques d'execució disponibles a PowerShell i com afecten l'execució de l'script. Les polítiques d'execució de PowerShell estan dissenyades per evitar l'execució d'scripts potencialment perjudicials. Les quatre polítiques principals són Restringit, AllSigned, RemoteSigned i Sense restriccions. Restringit és la política predeterminada i no permet que s'executi cap script. AllSigned requereix que tots els scripts i fitxers de configuració estiguin signats per un editor de confiança. RemoteSigned requereix que tots els scripts i fitxers de configuració baixats d'Internet estiguin signats per un editor de confiança, però permet que els scripts creats localment s'executin sense signatura.
Entendre aquestes polítiques ajuda els administradors a triar el nivell de seguretat adequat per al seu entorn. En escenaris en què els scripts s'han d'executar regularment, establir la política a Sense restriccions pot ser arriscat, ja que permet que tots els scripts s'executin sense cap restricció. En lloc d'això, els administradors haurien de considerar utilitzar RemoteSigned o AllSigned per equilibrar la seguretat amb la funcionalitat. Signant scripts i gestionant certificats, els administradors poden assegurar-se que només s'executen scripts de confiança als seus sistemes, reduint el risc d'executar codi maliciós.
Preguntes i respostes habituals sobre les polítiques d'execució de scripts de PowerShell
- Com comprobo la política d'execució actual al meu sistema?
- Utilitzeu l'ordre Get-ExecutionPolicy a PowerShell per comprovar la política d'execució actual.
- Com puc canviar permanentment la política d'execució per a tots els usuaris?
- Utilitzeu l'ordre Set-ExecutionPolicy -ExecutionPolicy [PolicyName] -Scope LocalMachine per canviar la política d'execució per a tots els usuaris.
- Què he de fer si trobo un script que no es pot executar a causa de les restriccions de la política?
- Estableix temporalment la política a Bypass Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process i executeu l'script.
- És segur utilitzar la política Sense restriccions?
- No es recomana utilitzar Sense restriccions per als entorns de producció, ja que permet que s'executin tots els scripts, cosa que pot suposar un risc de seguretat.
- Com puc signar un script de PowerShell?
- Creeu un certificat autofirmat amb New-SelfSignedCertificate i després signar l'script utilitzant Set-AuthenticodeSignature.
- Puc restringir l'execució d'scripts només a scripts de confiança?
- Sí, establint la política d'execució a AllSigned o RemoteSigned i signant els vostres scripts.
- Quina diferència hi ha entre les polítiques AllSigned i RemoteSigned?
- AllSigned requereix que tots els scripts estiguin signats per un editor de confiança, mentre que RemoteSigned només requereix que els scripts baixats d'Internet estiguin signats.
- Com puc crear un certificat autofirmat per a la signatura d'scripts?
- Utilitzeu l'ordre New-SelfSignedCertificate -DnsName "PowerShellLocalCert" -CertStoreLocation "Cert:\LocalMachine\My" per crear un certificat autofirmat.
- Quins són els riscos de seguretat de desactivar les polítiques d'execució d'scripts?
- La desactivació de les polítiques d'execució d'scripts pot exposar el vostre sistema a seqüències d'ordres maliciosos, la qual cosa pot provocar incompliments de seguretat i pèrdua de dades.
Punts clau
Assegurar la política d'execució de PowerShell correcta és crucial per executar scripts a Windows Server 2008 R2. Configuració de la política a Bypass o utilitzar fitxers per lots poden resoldre temporalment els problemes d'execució, però signar scripts ofereix una solució més segura i a llarg termini. Els administradors han de ser conscients de les implicacions de seguretat de les diferents polítiques d'execució i implementar mesures que equilibrin la seguretat amb les necessitats operatives.