PowerShell: una guà­a completa – parte 2

Te damos la bienvenida a la segunda de las 3 partes que componen PowerShell: una guà­a completa. Haz clic en los siguientes enlaces para consultar la parte 1 y la parte 3. En esta entrada hablaremos de la importación y exportación de datos hacia y desde el Shell.

Importar datos en PowerShell

PowerShell soporta una gran cantidad de formatos de datos que se pueden importar. Esto permite a los administradores ejecutar comandos en los datos introducidos. Hay dos comandos que aprender a utilizar, Get-Content e Import-csv. El cmdlet Get-Content captura el contenido de un objeto en una ubicación especà­fica, generalmente un texto o una cadena. Import-Csv crea un objeto personalizado similar a una tabla que utiliza los datos y los encabezados tomados de un archivo csv. Puedes obtener más información escribiendo get-help get-content -full y get-help import-csv -full

Para mostrar estas funciones utilizaremos nuestro laboratorio de pruebas The Solving 2012 R2. Creamos un archivo de prueba con los nombres de host de los servidores y lo guardamos en la ruta C:\Temp\Test.txt

test file - hostnames

Escribe Get-Content C:\TEMP\Test.txt y Powershell importará el contenido.

Get-Content test.txt

Ahora que tenemos los datos en el Shell, podemos comenzar a usarlos.

Escribe Get-Content C:\Temp\test.txt | ForEach-Object {Get-WMIObject -class win32_processor} | FT – Autosize

Este comando devuelve los detalles de la CPU de los servidores en test.txt. El comando introduce varios conceptos clave para entender la importación de datos en Powershell:

  • El comando Get-WMIObject -class win32_processor contiene la información de la CPU.
  • El cmdlet ForEach-Object aplicará el comando Get-WMIObject a cada nombre de host en la lista test.txt.
  • Las llaves { } que encierran el comando {Get-WMIObject -class win32_processor} informan a PowerShell de que debe ejecutar Get-WMIObject -class win32_processor para cada là­nea de texto C:\Temp\test.txt.
  • La parte final | FT -Autosize introduce el retorno de los datos (output) de PowerShell, FT es un alias de Format-Table, mientras el parámetro -autosize hace que el shell muestre la información de forma legible.

Como siempre, podemos ir aún más allá. El resultado anterior puede no contener toda la información que necesitamos sobre los procesadores.

Escribe Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Get-member

 

win32_processor expanded

Ahora puedes modificar el comando para buscar la información que necesitas.

Por ejemplo Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Select-Object Name, socketdesignation, numberofcores, number
oflogicalprocessors, L2cachesize, l3cachesize | Format-table -AutoSize

win32_processor expanded

Exportar datos de PowerShell

Ya hemos visto brevemente cómo mostrar los datos de PowerShell utilizando el cmdlet Format-Table. Hay muchos otros formatos disponibles y entre los más utilizados se encuentran:

  • Format-List: el formato por defecto de PowerShell, para la salida del pipeline. A continuación mostramos un ejemplo:

Escribe Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Select-Object Name, socketdesignation, numberofcores, number
oflogicalprocessors, L2cachesize, l3cachesize | Format-list

Format-List

  • Export-CSV: PowerShell puede exportar datos directamente en CSV (Valores separados por comas), una excelente solución para realizar un informe.

Escribe Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Select-Object Name, socketdesignation, numberofcores, number
oflogicalprocessors, L2cachesize, l3cachesize | Export-CSV C:\TEMP\Test.csv

A continuación, abre el archivo CSV que aparece en C:\TEMP\Test.csv

Export-CSV

  • Convertto-HTML: Powershell puede exportar datos directamente en HTML y también puede importar atributos CSS para crear informes gráficos atractivos.

Escribe Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Select-Object Name, socketdesignation, numberofcores, number
oflogicalprocessors, L2cachesize, l3cachesize | ConvertTo-Html > C:\Temp\test.html

Convertto-HTML

  • Output Everything!: también puedes pedirle a PowerShell que muestre todo lo que se encuentre en el pipeline. Solo hay que añadir -property * al comando

Escribe Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Format-List-Property *

Format-List -property *

En la tercera parte de PowerShell: una guà­a completa presentaremos algunos ejemplos prácticos de scripts de PowerShell para administradores de TI. Hablaremos de soluciones útiles para trabajar con Active Directory, sistemas de archivos y mucho más.

Read related articles