Con PowerShell tenemos varias opciones para importar y exportar datos. Para facilitar el poder recibir y enviar información a otros procesos o tareas, existen varios formatos con los que PowerShell puede trabajar de una forma sencilla.
Archivos de texto
Es la forma más sencilla de importar y exportar datos, utilizando archivos de texto planos.
Podemos crear un archivo de texto con el resultado con varias opciones:
- Out-File:
- Redirigiendo la salida con “>” (o “>>” si no queremos que sobrescriba la información)
Para obtener la información de archivos de texto, utilizamos el cmdlet Get-Content. Como opciones, podemos leer el principio o el final del archivo (-Head y -Tail)
También puede procesar el contenido de forma que si le indicamos un carácter delimitador, separa cada campo en distintas lineas
CSV
CSV (Comman Separated value) es uno de los formatos más extendidos y sencillos a la hora de trabajar con archivos de texto. Utiliza la coma para separar los campos (también se pueden utilizar otros caracteres)
Tenemos los siguientes comandos:
Import-CSV: con powershell podemos importar cualquier archivo CSV. Por defecto el delimitador es la coma, pero se puede indicar otro.La cabecera del archivo pasan a ser los nombres de las propiedades pero también se pueden indicar otros. Todos los valores son importados como cadenas de texto salvo, que PowerShell identifique el contenido como uno de los objetos ya definidos.
Veamos un ejemplo sencillo.
Tenemos un archivo de texto en formato CSV con varios nombres de servidores, direcciones IP y sistema operativo
Si queremos obtener esa información en una variable es tan sencillo como utilizar Import-CSV
$servidores = Import-Csv servidores.csv
Y como vemos el tipo de la variable $servidores, es un objeto de tipo Custom, con las propiedades indicadas por la cabecera del archivo CSV
Export-CSV: en este caso permite crear archivos CSV a partir de un objeto o conjunto de objetos. Hay que tener en cuenta que las propiedades del objeto se convierten en la cabecera del archivo CSV y que los arrays y objetos no se exportan, por lo que puede que no obtengamos la salida deseada.
También indicar que como primera linea del archivo CSV se añade el tipo de objeto que se ha exportado como comentario. Se puede quitar con el parámetro NoTypeInformation
Algún ejemplo:
Get-Process | Export-CSV procesos.csv
Ahora vamos a ver como lo que se muestra en pantalla no tiene por que coincidir con lo que se exporta al archivo CSV
Vemos que al exportar en CSV la propiedad DependentServices, cuyo contenido es un array de objetos, no es exportado correctamente al archivo CSV por lo que tendremos que tener cuidado cuando utilizamos este cmdlet
ConvertTo-CSV y ConvertoFrom-CSV: permite trabajar con formato CSV pero sin la necesidad de utilizar archivos, como si necesitamos con Import-CSV y Export-CSV
XML
XML es mejor elección cuando se necesita trabajar con objetos más complejos. PowerShell soporta la librería XML de .NET. Es más útil si queremos compartir la información con terceras aplicaciones.
Los comandos disponibles son similares a CSV:
Export-Clixml: permite exportar los objetos a un archivo XML. A diferencia de CSV, cuando exportamos a XML se encarga de procesar y mostrar toda la información de los objetos
Import-Clixml: permite exportar los objetos a un archivo XML
ConvertTo-Clixml: permite trabajar con el formato XML sin la necesidad de utilizar archivos.
Temas
- Introducción
- Instalación y requerimientos
- Ayuda
- Ampliando la funcionalidad
- Canalización
- Operadores
- Comandos básicos
- Formato de salida
- Importar y Exportar datos
- Arrays y HashTables
- Ejecución de Scripts
- Providers
- Trabajos
- Scripts y funciones
- Gestión de Errores
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?