Resolució de problemes d'execució d'scripts de PowerShell a Windows Server 2008 R2

Resolució de problemes d'execució d'scripts de PowerShell a Windows Server 2008 R2
Resolució de problemes d'execució d'scripts de PowerShell a Windows Server 2008 R2

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

  1. Com comprobo la política d'execució actual al meu sistema?
  2. Utilitzeu l'ordre Get-ExecutionPolicy a PowerShell per comprovar la política d'execució actual.
  3. Com puc canviar permanentment la política d'execució per a tots els usuaris?
  4. Utilitzeu l'ordre Set-ExecutionPolicy -ExecutionPolicy [PolicyName] -Scope LocalMachine per canviar la política d'execució per a tots els usuaris.
  5. Què he de fer si trobo un script que no es pot executar a causa de les restriccions de la política?
  6. Estableix temporalment la política a **Bypass** Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process i executeu l'script.
  7. És segur utilitzar la política **Sense restriccions**?
  8. 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.
  9. Com puc signar un script de PowerShell?
  10. Creeu un certificat autofirmat amb New-SelfSignedCertificate i després signar l'script utilitzant Set-AuthenticodeSignature.
  11. Puc restringir l'execució d'scripts només a scripts de confiança?
  12. Sí, establint la política d'execució a **AllSigned** o **RemoteSigned** i signant els vostres scripts.
  13. Quina diferència hi ha entre les polítiques **AllSigned** i **RemoteSigned**?
  14. **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.
  15. Com puc crear un certificat autofirmat per a la signatura d'scripts?
  16. Utilitzeu l'ordre New-SelfSignedCertificate -DnsName "PowerShellLocalCert" -CertStoreLocation "Cert:\LocalMachine\My" per crear un certificat autofirmat.
  17. Quins són els riscos de seguretat de desactivar les polítiques d'execució d'scripts?
  18. 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.