Búsqueda de sitios web

Uso de scripts de PowerShell para la automatización


En la primera parte de la serie de artículos, "Comprensión de Windows PowerShell", ya analizamos las posibilidades de los scripts.

Los scripts le permiten automatizar tareas en PowerShell. No sólo se pueden automatizar sistemas de Microsoft como Windows Server, Windows Workstations, Exchange, SQL o SharePoint. Muchos proveedores externos también confían en PowerShell para administrar sus servicios de servidor. Herramientas como ScriptRunner mejoran aún más las posibilidades ofrecidas: con ScriptRunner Web Service Connector, por ejemplo, puede automatizar fácilmente sistemas de terceros utilizando sus API REST.

Pero antes de sumergirnos en la automatización de PowerShell, necesitamos una cosa: scripts de PowerShell. A continuación, entramos en más detalles sobre cómo crearlos o dónde encontrarlos y qué posibilidades surgen con los scripts en PowerShell.

Descargar guiones terminados

Hay muchos scripts en Internet que se basan en PowerShell y tienen diferentes usos. Microsoft ofrece muchos scripts gratuitos en la página web “Recursos de scripts para profesionales de TI” que puede descargar, usar o agregar. Asegúrate de que el guión esté lo más actualizado posible y tenga una buena calificación. La página de descarga también muestra para qué sistemas operativos se lanzó el script. Las condiciones de licencia de los scripts también se muestran durante la descarga.

Esto es lo que necesita saber sobre los scripts de PowerShell

Los scripts de PowerShell pueden realizar amplias personalizaciones en los sistemas. Entonces, antes de ejecutar el script, debes mirarlo y asegurarte de que no realiza ninguna acción que no desees. En los scripts de PowerShell, puede usar otros comandos, como el símbolo del sistema, además de los comandos de PowerShell (cmdlets). También se pueden utilizar herramientas de terceros en los scripts de PowerShell.

Los buenos scripts de PowerShell deben estar firmados digitalmente para que la política de ejecución (consulte la primera parte de este artículo) no los bloquee. En caso de emergencia, puede desactivar la política de ejecución de PowerShell. Esto hará que se ejecuten scripts sin firmar, pero su sistema ya no estará protegido. Sin embargo, la política de ejecución no es una protección total. ExecutionPolicy protege el sistema contra el inicio accidental de un script. Por lo tanto, ExecutionPolicy no es una característica de seguridad integral. Para deshabilitar la política es necesario iniciar PowerShell desde el menú contextual administrativo (Fig. 1).

Figura 1: Para realizar ajustes en PowerShell y la política de ejecución, PowerShell debe iniciarse como administrador

Utilice el siguiente comando para desactivar la política de ejecución:

Set-ExecutionPolicy Unrestricted

Ya hemos comentado las distintas opciones en el primer artículo de la serie. Para los scripts de Internet, debe asegurarse de que provengan de una fuente confiable. Además, el guión debe contener comentarios sobre las acciones a realizar. Al comienzo de un script, debe haber información sobre quién creó el script, qué hace y qué deben saber los usuarios al respecto (como se muestra en la Fig. 2).

Figura 2: Los scripts deben contener suficiente información para que los usuarios comprendan qué hace el script cuando se inicia.

En general, tiene sentido que los comentarios dentro de los scripts indiquen qué acciones siguen en el script y si es posible que los usuarios necesiten editar algo en el script.

Iniciar guiones

Para iniciar un script, primero se descarga a un directorio en la computadora. Luego se llama al script a través de su archivo *.ps1. Muchos scripts todavía necesitan parámetros diferentes para comenzar. Se le debe informar sobre esto al comienzo del script o en la ayuda se deben documentar las opciones. Si se encuentra en el directorio en el que está almacenado el script, debe iniciar el script después de la sintaxis “.skript.ps1”.

Creando guiones usted mismo

Si desea crear scripts usted mismo, debería utilizar un editor adecuado. Algunos ejemplos son el entorno de scripting integrado (ISE) de Windows PowerShell, que forma parte de Windows, Microsoft Visual Studio Code, el editor de código abierto de Microsoft o la solución de código abierto Notepad++.

Aprendiendo a crear guiones

Para aprender a utilizar scripts de PowerShell, no es absolutamente necesario reservar cursos. Hay varios sitios en Internet que le ayudarán a aprender con PowerShell. Los vídeos de YouTube también te ayudan a aprender PowerShell. Ejemplos bien conocidos son:

  • Introducción a Microsoft PowerShell
  • Canal de Youtube de ScriptRunner
  • PowerShell [Tutorial de introducción para usuarios de Hyper-V y otros]
  • Tutorial de Windows PowerShell para principiantes
  • Windows-Scripting.com

ISEEstereoides - Extensión para Windows PowerShell ISE

ISESteroids usa Windows PowerShell ISE para editar scripts, pero lo amplía. Para usarlo, sólo necesitas cargar la extensión con “Start-Steroids”. Es un módulo de PowerShell, no una aplicación adicional que reemplaza a PowerShell ISE.

Idera PowerShell Plus - Editor gratuito

El editor gratuito PowerShell Plus de Idera proporciona un entorno de desarrollo para scripts de PowerShell. La aplicación incluye partes de guiones ya preparadas que puede incluir en sus guiones. En general, la funcionalidad de Idera PowerShell Plus es similar a la de PowerShell ISE, además de la capacidad de crear scripts a partir de plantillas. Después de la instalación, inicie la aplicación. Si recibe un error de derechos, inicie la aplicación a través del menú contextual con derechos de administrador.

Después del inicio, aparece un asistente para ayudarle a configurar el editor. Por ejemplo, durante la instalación puede controlar la política de ejecución de scripts y ver el estado actual. También puede conectar servidores SQL al editor para ejecutar scripts de PowerShell directamente para servidores SQL. Luego puede comenzar a editar guiones.

Usando código de Visual Studio con PowerShell

Ya hemos mencionado el código de Microsoft Visual Studio en las secciones anteriores. Con el entorno de desarrollo gratuito, no sólo puede trabajar con lenguajes de programación, sino también descargar scripts de PowerShell y desarrollar sus propios scripts.

Figura 3: Desarrollo de scripts de PowerShell con código de Visual Studio

Visual Studio Code (VSCode) le permite desarrollar aplicaciones y aplicaciones multiplataforma. Con Windows, Linux y macOS X se admiten las plataformas más importantes. Microsoft proporciona Visual Studio Code (VSCode) como código abierto y gratuito. PowerShell Core es la nueva versión de PowerShell, que también está disponible para Linux y macOS X. Esta nueva versión también se puede utilizar con código de Visual Studio. La pestaña Terminal en Visual Studio Code le permite abrir los shells compatibles con VSCode. PowerShell también está disponible aquí. Usando la combinación de teclas “CTRL+P” o “CMD+P” (macos X) aparece una barra de búsqueda en la zona superior. Aquí puede instalar extensiones para VSCode, por ejemplo PowerShell. Para hacer esto, ingrese el comando “ext install powershell”.

Usando PowerShell Core en Linux

El PowerShell Core mencionado en la última sección también se puede utilizar en Linux. Para instalar PowerShell Core en una máquina Linux, primero debe importar los repositorios públicos de claves GPG:

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list

Luego, Microsoft registra el repositorio de Ubuntu y se realiza una actualización:

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
sudo apt-get update

PowerShell Core se importa desde el repositorio de Ubuntu de Microsoft.

Luego se instala PowerShell y se puede iniciar de inmediato:

sudo apt-get install -y powershell

Después de la instalación, PowerShell está disponible y puede trabajar con el shell, también para crear scripts.

Convierta sus propios scripts de PowerShell

Sobre la base de las herramientas y sistemas operativos, así como de los procedimientos de este artículo y la primera parte del artículo, también puede crear sus propios scripts. Además de los cmdlets disponibles para crear scripts, PowerShell también ofrece capacidades avanzadas. Por ejemplo, utiliza el cmdlet Start-Sleep para detener las actividades de Windows PowerShell. El comando Start-Sleep -s 10 detiene el script durante diez segundos. Start-Sleep -m 10000 utiliza milisegundos. Si utiliza el operador de tubería | Out-Printer para pasar la salida de los cmdlets al cmdlet Out-Printer, PowerShell imprime la salida en la impresora predeterminada.

También puede especificar la impresora entre comillas y la etiqueta en el controlador de la impresora. Puede usar el cmdlet Write-Warning para mostrar sus propias advertencias en PowerShell. Write-Host escribe la salida en la consola/host de PowerShell, si existe. Estos dos comandos se encuentran a menudo en scripts que puede descargar desde la Galería de PowerShell. Los colores de la salida se configuran con -ForeGroundColor y -BackGroundColor.

Trabajar con variables

También es interesante que también puedes definir variables dentro del shell. Puede utilizar estas variables dentro de un script. Por ejemplo, si desea almacenar la fecha actual como variable $today, puede ingresar el comando $today=Get-Date en el shell. La fecha de hoy se almacena como variable $today. Si luego ingresa $today en el shell, se mostrará la fecha actual.

El comando Get-Date -Displayhint Date solo muestra la fecha, Get-Date -Displayhint Time solo la hora. Puede determinar qué tipo de objeto obtiene un cmdlet en particular pasando los resultados del comando Get al comando Get-Member mediante un operador de canalización (|). Esto le permite utilizar Get-Service | Comando Get-Member para enviar objetos recuperados a Get-Member.

Este comando muestra información sobre el objeto .NET que devuelve un comando. Esta información incluye el tipo, las propiedades y los métodos del objeto. Por ejemplo, para mostrar todas las propiedades de un objeto de servicio, escriba Get-Service | Get-Member -MemberType *propiedad.

Copiar, eliminar y administrar archivos y objetos

El cmdlet Copy-Item se utiliza para copiar archivos o carpetas a scripts. También puede copiar claves de registro, certificados y más. Por ejemplo, el comando Copiar elemento C:\\Scriptstest.txt C:\\Test copia el archivo test.txt.

El comando Copiar elemento C:\\Scripts* C:\\Test copia todos los archivos en la carpeta de origen correspondiente a la carpeta de destino. El comando Copy-Item C:\\Scripts C:\\Test -Recurse crea una copia de la carpeta C:\\Scripts en C:\ carpeta \Prueba. Sin la opción -Recurse, se crea una carpeta de Scripts en C:\\Test, pero no se copian archivos ni carpetas. Además del comando completo también puedes trabajar con las abreviaturas cpi, cp o copia.

El cmdlet Move-Item mueve objetos: Move-Item C:\\Scriptstest.zip c:\\test. Aquí también puedes trabajar con marcadores de posición, al igual que al copiar. De forma predeterminada, Move-Item no sobrescribe los archivos existentes en la carpeta de destino. El parámetro -Force sobrescribe los archivos o carpetas de destino existentes: Move-Item C:\\Scriptstest.zip C:\\Test -Force. El comando Move-Item C:\\Scriptstest.log C:\\Testad.log mueve y cambia el nombre de los archivos al mismo tiempo.

Además de Move-Item, también puedes trabajar con mi, mv o move. Utilice el cmdlet New-Item para crear nuevos archivos o carpetas. Utilice el comando New-Item C:\\TempPowerShell -Type Directory para crear una nueva carpeta vacía llamada PowerShell en C:\\Temp . carpeta.

Para crear un archivo nuevo, utilice la misma sintaxis, pero escriba Archivo: Nuevo-elemento C:\\Scriptscript.txt -Tipo de archivo. Utilice el comando New-Item C:\\Scriptsskript.txt -Type File -Force para reemplazar un archivo existente con un nuevo archivo vacío. Utilice el comando New-Item C:\\Scriptsskript.txt -Type File -Force -Value “Text ” para crear un nuevo archivo con el texto especificado como contenido. También puedes usar ni en lugar de Nuevo-elemento.

Utilice el cmdlet Add-Content para agregar datos a un archivo de texto: Add-Content C:\\Scriptstest.txt Text. De forma predeterminada, Agregar contenido inserta el nuevo valor después del último carácter del archivo de texto.

Reemplace el contenido de un archivo con Set-Content. El cmdlet Clear-Content elimina el contenido de un archivo. Después de ejecutarse, el archivo todavía existe, pero no tiene contenido. También puede utilizar caracteres comodín aquí: Clear-Content C:\\Test*. Además de los archivos de texto, el cmdlet también admite tablas de Excel, documentos de Word y otros archivos. También puedes usar clc en lugar de Clear-Content. El cmdlet Remove-Item elimina objetos: Remove-Item C:\\Scriptstest.txt.

El carácter comodín * elimina objetos en una carpeta especificada: Remove-Item C:\\Scripts*. El comando Remove-Item C:\\Scripts* Recurse no necesita confirmar la eliminación. El comando Remove-Item C:\\Scripts* -Exclude *.doc elimina todos los archivos excepto aquellos que excluyó con -Exclude. Remove-Item C:\\Scripts* -Include .xls,.doc elimina solo los archivos detrás de -Include. También puede usar ambas opciones juntas, por ejemplo: Remove-Item C:\\Scripts* -Include *.txt -Exclude *test*.

Aquí, PowerShell elimina todos los archivos de texto de la carpeta, excepto los archivos con la cadena "prueba" en el nombre del archivo. El parámetro -Whatif no elimina nada, pero devuelve lo que sucedería: Remove-Item C:\\windows*.exe -Whatif.

En lugar de Remove-Item también puedes usar ri, rd, erase, rm , rmdir o del. Cambie el nombre de los objetos existentes con el cmdlet Rename-Item: Rename-Item C:\\Scriptstest.txt new.txt. El rni y ren también conducen al objetivo.

Artículos relacionados