Ejecución de scripts y establecimiento de la directiva de ejecución en Windows PowerShell
Para poder empezar a modificar scripts de Windows PowerShell o crear los suyos propios, debe saber cómo ejecutar un script de Windows PowerShell. Es posible que esté familiarizado con la idea de hacer doble clic en un archivo ejecutable o seleccionarlo y, a continuación, seleccionar Intro para ejecutarlo, pero este proceso no funciona para los scripts de Windows PowerShell.
Uno de los problemas con muchos lenguajes de scripting es que ejecutar los scripts sin querer es demasiado fácil. Los usuarios pueden ejecutar un script sin querer, haciendo doble clic sobre él o seleccionándolo y, a continuación, haciendo clic en Intro. Esta acción es especialmente problemática cuando la extensión del archivo está oculta y el malware aparece como archivo adjunto en un correo electrónico. Por ejemplo, un archivo adjunto denominado receipt.txt.vbs se mostraría como receipt.txt y los usuarios lo ejecutarían sin querer, pensando que es un simple archivo de texto. Este valor no es un problema para los scripts de Windows PowerShell debido a las acciones necesarias para ejecutar un script.
Integración con el Explorador de archivos
Para que los scripts de Windows PowerShell sean más seguros, la extensión de archivo .ps1 está asociada con el Bloc de notas. Por lo tanto, al hacer doble clic en un archivo .ps1 o seleccionarlo y, a continuación, seleccionar Intro, se abre en el Bloc de notas. Este valor significa que los usuarios no se pueden engañar para ejecutar un script de Windows PowerShell haciendo doble clic en él o seleccionándolo y, a continuación, seleccionando Intro.
Al hacer clic con el botón derecho en un script de Windows PowerShell o activar su menú contextual, tiene tres opciones:
- Abrir Esta opción abre el script en el Bloc de notas.
- Ejecutar con PowerShell. Esta opción ejecuta el script, pero la solicitud de Windows PowerShell no permanece abierta cuando se completa el script.
- Editar. Esta opción abre el script en el Windows PowerShell ISE.
En la mayoría de los casos, la solicitud de Windows PowerShell debe permanecer abierta al ejecutar un script. Para realizar esta tarea, ejecute el script desde una solicitud de Windows PowerShell que ya esté abierta.
Ejecución de scripts en la solicitud de PowerShell
Al ejecutar un archivo ejecutable en un símbolo del sistema, puede escribir el nombre para ejecutarlo en el directorio actual. Por ejemplo, cuando el directorio actual es C:\app, puede escribir app.exe para ejecutar C:\app\app.exe. No puede usar este proceso para ejecutar scripts de Windows PowerShell, ya que no busca en el directorio actual.
Para ejecutar un script de Windows PowerShell en la solicitud de Windows PowerShell, puede usar los métodos siguientes:
- Escriba la ruta de acceso completa en el script; por ejemplo, C:\Scripts\MyScript.ps1.
- Escriba la ruta de acceso relativa en el script; por ejemplo, \Scripts\MyScript.ps1.
- Haga referencia al directorio actual; por ejemplo, .\MyScript.ps1.
Directiva de ejecución de scripts
Puede controlar si los scripts de Windows PowerShell se pueden ejecutar en equipos Windows. Para ello, establezca la directiva de ejecución en el equipo. La directiva de ejecución predeterminada en un equipo varía en función de la versión del sistema operativo. Para asegurarse de la configuración actual, puede usar el cmdlet Get-ExecutionPolicy.
Las opciones de la directiva de ejecución son:
- Restringido. No se permite ejecutar ningún script.
- AllSigned. Los scripts solo se pueden ejecutar si están firmados digitalmente.
- RemoteSigned. Los scripts que se descargan solo se pueden ejecutar si están firmados digitalmente.
- Sin restricciones. Todos los scripts se pueden ejecutar, pero se muestra una solicitud de confirmación al ejecutar scripts sin firmar que se descargan.
- Bypass. Todos los scripts se ejecutan sin solicitud.
Nota
Establecer la directiva de ejecución de scripts proporciona una red de seguridad que puede impedir que los scripts que no sean de confianza se ejecuten sin querer. Sin embargo, la directiva de ejecución siempre se puede invalidar.
Puede establecer la directiva de ejecución en un equipo mediante el cmdlet Set-ExecutionPolicy. Sin embargo, este valor es difícil de administrar en muchos equipos. Al configurar la directiva de ejecución en muchos equipos, puede usar el valor de directiva de grupo Configuración del equipo\Directivas\Plantillas administrativas\Componentes de Windows\Windows PowerShell\Activar ejecución de scripts para invalidar la configuración local.
Puede invalidar la directiva de ejecución de una instancia de Windows PowerShell individual. Este valor es útil si la directiva de empresa requiere que la directiva de ejecución se establezca como Restringida, pero todavía debe ejecutar scripts ocasionalmente. Para invalidar la directiva de ejecución, ejecute PowerShell.exe con el parámetro -ExecutionPolicy.
Powershell.exe -ExecutionPolicy ByPass
Si ha modificado un script descargado de Internet, el script todavía tiene los atributos que lo identifican como un archivo descargado. Para quitar ese estado de un script, use el cmdlet Unblock-File.