Export-Csv
Convierte los objetos en una serie de cadenas de valores separados por caracteres (CSV) y guarda las cadenas en un archivo.
Syntax
Export-Csv
[[-Path] <string>]
[[-Delimiter] <char>]
-InputObject <psobject>
[-LiteralPath <string>]
[-Force]
[-NoClobber]
[-Encoding <string>]
[-Append]
[-NoTypeInformation]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Csv
[[-Path] <string>]
-InputObject <psobject>
[-LiteralPath <string>]
[-Force]
[-NoClobber]
[-Encoding <string>]
[-Append]
[-UseCulture]
[-NoTypeInformation]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
El Export-CSV
cmdlet crea un archivo CSV de los objetos que envía. Cada objeto es una fila que incluye una lista separada por caracteres de los valores de propiedad del objeto. Puede usar el Export-CSV
cmdlet para crear hojas de cálculo y compartir datos con programas que aceptan archivos CSV como entrada.
No dé formato a los objetos antes de enviarlos al Export-CSV
cmdlet . Si Export-CSV
recibe objetos con formato, el archivo CSV contiene las propiedades de formato en lugar de las propiedades del objeto. Para exportar solo las propiedades seleccionadas de un objeto, use el Select-Object
cmdlet .
Ejemplos
Ejemplo 1: Exportación de propiedades de proceso a un archivo CSV
En este ejemplo se selecciona Procesar objetos con propiedades específicas, se exporta los objetos a un archivo CSV.
Get-Process -Name WmiPrvSE |
Select-Object -Property BasePriority,Id,SessionId,WorkingSet |
Export-Csv -Path .\WmiData.csv -NoTypeInformation
Import-Csv -Path .\WmiData.csv
BasePriority Id SessionId WorkingSet
------------ -- --------- ----------
8 976 0 20267008
8 2292 0 36786176
8 3816 0 30351360
8 8604 0 15011840
8 10008 0 8830976
8 11764 0 14237696
8 54632 0 9502720
El Get-Process
cmdlet obtiene los objetos Process . El parámetro Name filtra la salida para incluir solo los objetos de proceso WmiPrvSE. Los objetos de proceso se envían por la canalización al Select-Object
cmdlet . Select-Object
usa el parámetro Property para seleccionar un subconjunto de propiedades de objeto de proceso. Los objetos de proceso se envían por la canalización al Export-Csv
cmdlet . Export-Csv
convierte los objetos de proceso en una serie de cadenas CSV. El parámetro Path especifica que el WmiData.csv
archivo se guarda en el directorio actual. El parámetro NoTypeInformation quita el encabezado de información #TYPE de la salida CSV y no es necesario en PowerShell 6. El Import-Csv
cmdlet usa el parámetro Path para mostrar el archivo ubicado en el directorio actual.
Ejemplo 2: Exportación de procesos a un archivo delimitado por comas
En este ejemplo se obtienen objetos Process y se exporta los objetos a un archivo CSV.
Get-Process | Export-Csv -Path .\Processes.csv -NoTypeInformation
Get-Content -Path .\Processes.csv
"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","511","2203597099008","35364864","21979136","30048", ...
El Get-Process
cmdlet obtiene objetos Process . Los objetos de proceso se envían por la canalización al Export-Csv
cmdlet . Export-Csv
convierte los objetos de proceso en una serie de cadenas CSV. El parámetro Path especifica que el Processes.csv
archivo se guarda en el directorio actual. El parámetro NoTypeInformation quita el encabezado de información #TYPE de la salida CSV y no es necesario en PowerShell 6. El Get-Content
cmdlet usa el parámetro Path para mostrar el archivo ubicado en el directorio actual.
Ejemplo 3: Exportación de procesos a un archivo delimitado por punto y coma
En este ejemplo se obtienen objetos Process y se exportan los objetos a un archivo con un delimitador de punto y coma.
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter ';' -NoTypeInformation
Get-Content -Path .\Processes.csv
"Name";"SI";"Handles";"VM";"WS";"PM";"NPM";"Path";"Parent";"Company";"CPU";"FileVersion"; ...
"ApplicationFrameHost";"4";"509";"2203595321344";"34807808";"21770240";"29504"; ...
El Get-Process
cmdlet obtiene objetos Process . Los objetos de proceso se envían por la canalización al Export-Csv
cmdlet . Export-Csv
convierte los objetos de proceso en una serie de cadenas CSV. El parámetro Path especifica que el Processes.csv
archivo se guarda en el directorio actual. El parámetro Delimiter especifica un punto y coma para separar los valores de cadena. El parámetro NoTypeInformation quita el encabezado de información #TYPE de la salida CSV y no es necesario en PowerShell 6. El Get-Content
cmdlet usa el parámetro Path para mostrar el archivo ubicado en el directorio actual.
Ejemplo 4: Exportación de procesos mediante el separador de lista de la referencia cultural actual
En este ejemplo se obtienen objetos Process y se exporta los objetos a un archivo. El delimitador es el separador de lista de la referencia cultural actual.
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture -NoTypeInformation
Get-Content -Path .\Processes.csv
"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","511","2203597099008","35364864","21979136","30048", ...
El Get-Culture
cmdlet usa las propiedades anidadas TextInfo y ListSeparator y muestra el separador de lista predeterminado de la referencia cultural actual. El Get-Process
cmdlet obtiene objetos Process . Los objetos de proceso se envían por la canalización al Export-Csv
cmdlet . Export-Csv
convierte los objetos de proceso en una serie de cadenas CSV. El parámetro Path especifica que el Processes.csv
archivo se guarda en el directorio actual. El parámetro UseCulture usa el separador de lista predeterminado de la referencia cultural actual como delimitador. El parámetro NoTypeInformation quita el encabezado de información #TYPE de la salida CSV y no es necesario en PowerShell 6. El Get-Content
cmdlet usa el parámetro Path para mostrar el archivo ubicado en el directorio actual.
Ejemplo 5: Exportación de procesos con información de tipo
En este ejemplo se explica cómo incluir la información de encabezado #TYPE en un archivo CSV. El encabezado #TYPE es el valor predeterminado en versiones anteriores a PowerShell 6.0.
Get-Process | Export-Csv -Path .\Processes.csv
Get-Content -Path .\Processes.csv
#TYPE System.Diagnostics.Process
"Name","SI","Handles","VM","WS","PM","NPM","Path","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","507","2203595001856","35139584","20934656","29504", ...
El Get-Process
cmdlet obtiene objetos Process . Los objetos de proceso se envían por la canalización al Export-Csv
cmdlet . Export-Csv
convierte los objetos de proceso en una serie de cadenas CSV.
El parámetro Path especifica que el Processes.csv
archivo se guarda en el directorio actual.
El Get-Content
cmdlet usa el parámetro Path para mostrar el archivo ubicado en el directorio actual.
Ejemplo 6: Exportar y anexar objetos a un archivo CSV
En este ejemplo se describe cómo exportar objetos a un archivo CSV y usar el parámetro Append para agregar objetos a un archivo existente.
$AppService = (Get-Service -DisplayName *Application* | Select-Object -Property DisplayName, Status)
$AppService | Export-Csv -Path .\Services.Csv -NoTypeInformation
Get-Content -Path .\Services.Csv
$WinService = (Get-Service -DisplayName *Windows* | Select-Object -Property DisplayName, Status)
$WinService | Export-Csv -Path .\Services.csv -NoTypeInformation -Append
Get-Content -Path .\Services.Csv
"DisplayName","Status"
"Application Layer Gateway Service","Stopped"
"Application Identity","Running"
"Windows Audio Endpoint Builder","Running"
"Windows Audio","Running"
"Windows Event Log","Running"
El Get-Service
cmdlet obtiene objetos de servicio. El parámetro DisplayName devuelve servicios que contienen la palabra Application. Los objetos de servicio se envían a la canalización al Select-Object
cmdlet . Select-Object
usa el parámetro Property para especificar las propiedades DisplayName y Status . La $AppService
variable almacena los objetos.
Los $AppService
objetos se envían a la canalización al Export-Csv
cmdlet . Export-Csv
convierte los objetos de servicio en una serie de cadenas CSV. El parámetro Path especifica que el Services.csv
archivo se guarda en el directorio actual. El parámetro NoTypeInformation quita el encabezado de información #TYPE de la salida CSV y no es necesario en PowerShell 6. El Get-Content
cmdlet usa el parámetro Path para mostrar el archivo ubicado en el directorio actual.
Los Get-Service
cmdlets y Select-Object
se repiten para los servicios que contienen la palabra Windows. La $WinService
variable almacena los objetos de servicio. El Export-Csv
cmdlet usa el parámetro Append para especificar que los $WinService
objetos se agregan al archivo existente Services.csv
. El Get-Content
cmdlet se repite para mostrar el archivo actualizado que incluye los datos anexados.
Ejemplo 7: Formato del cmdlet dentro de una canalización crea resultados inesperados
En este ejemplo se muestra por qué es importante no usar un cmdlet de formato dentro de una canalización. Cuando se recibe una salida inesperada, solucione los problemas de la sintaxis de la canalización.
Get-Date | Select-Object -Property DateTime, Day, DayOfWeek, DayOfYear |
Export-Csv -Path .\DateTime.csv -NoTypeInformation
Get-Content -Path .\DateTime.csv
"DateTime","Day","DayOfWeek","DayOfYear"
"Wednesday, January 2, 2019 14:59:34","2","Wednesday","2"
Get-Date | Format-Table -Property DateTime, Day, DayOfWeek, DayOfYear |
Export-Csv -Path .\FTDateTime.csv -NoTypeInformation
Get-Content -Path .\FTDateTime.csv
"ClassId2e4f51ef21dd47e99d3c952918aff9cd","pageHeaderEntry","pageFooterEntry","autosizeInfo", ...
"033ecb2bc07a4d43b5ef94ed5a35d280",,,,"Microsoft.PowerShell.Commands.Internal.Format. ...
"9e210fe47d09416682b841769c78b8a3",,,,,
"27c87ef9bbda4f709f6b4002fa4af63c",,,,,
"4ec4f0187cb04f4cb6973460dfe252df",,,,,
"cf522b78d86c486691226b40aa69e95c",,,,,
El Get-Date
cmdlet obtiene el objeto DateTime . El objeto se envía a la canalización al Select-Object
cmdlet . Select-Object
usa el parámetro Property para seleccionar un subconjunto de propiedades de objeto. El objeto se envía a la canalización al Export-Csv
cmdlet . Export-Csv
convierte el objeto en un formato CSV. El parámetro Path especifica que el DateTime.csv
archivo se guarda en el directorio actual. El parámetro NoTypeInformation quita el encabezado de información #TYPE de la salida CSV y no es necesario en PowerShell 6. El Get-Content
cmdlet usa el parámetro Path para mostrar el archivo CSV ubicado en el directorio actual.
Cuando se usa el Format-Table
cmdlet dentro de la canalización para seleccionar las propiedades resultados inesperados se reciben. Format-Table
envía objetos de formato de tabla por la canalización al Export-Csv
cmdlet en lugar del objeto DateTime . Export-Csv
convierte los objetos de formato de tabla en una serie de cadenas CSV. El Get-Content
cmdlet muestra el archivo CSV que contiene los objetos de formato de tabla.
Ejemplo 8: Uso del parámetro Force para sobrescribir archivos de solo lectura
En este ejemplo se crea un archivo vacío de solo lectura y se usa el parámetro Force para actualizar el archivo.
New-Item -Path .\ReadOnly.csv -ItemType File
Set-ItemProperty -Path .\ReadOnly.csv -Name IsReadOnly -Value $true
Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation
Export-Csv : Access to the path 'C:\ReadOnly.csv' is denied.
At line:1 char:15
+ Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Export-Csv], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ExportCsvCommand
Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation -Force
Get-Content -Path .\ReadOnly.csv
"Name";"SI";"Handles";"VM";"WS";"PM";"NPM";"Path";"Parent";"Company";"CPU";"FileVersion"; ...
"ApplicationFrameHost";"4";"509";"2203595321344";"34807808";"21770240";"29504"; ...
El New-Item
cmdlet usa los parámetros Path y ItemType para crear el ReadOnly.csv
archivo en el directorio actual. El Set-ItemProperty
cmdlet usa los parámetros Name y Value para cambiar la propiedad IsReadOnly del archivo a true. El Get-Process
cmdlet obtiene objetos Process . Los objetos de proceso se envían por la canalización al Export-Csv
cmdlet .
Export-Csv
convierte los objetos de proceso en una serie de cadenas CSV. El parámetro Path especifica que el ReadOnly.csv
archivo se guarda en el directorio actual. El parámetro NoTypeInformation quita el encabezado de información #TYPE de la salida CSV y no es necesario en PowerShell 6. La salida muestra que el archivo no está escrito porque se deniega el acceso.
El parámetro Force se agrega al Export-Csv
cmdlet para forzar la exportación a escribir en el archivo. El Get-Content
cmdlet usa el parámetro Path para mostrar el archivo ubicado en el directorio actual.
Ejemplo 9: Uso del parámetro Force con Append
En este ejemplo se muestra cómo usar los parámetros Force y Append . Cuando estos parámetros se combinan, las propiedades de objeto no coincidentes se pueden escribir en un archivo CSV.
$Content = [PSCustomObject]@{Name = 'PowerShell'; Version = '7.0'}
$Content | Export-Csv -Path .\ParmFile.csv -NoTypeInformation
$AdditionalContent = [PSCustomObject]@{Name = 'Windows PowerShell'; Edition = 'Desktop'}
$AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append
Export-Csv : Cannot append CSV content to the following file: ParmFile.csv.
The appended object does not have a property that corresponds to the following column:
Version. To continue with mismatched properties, add the -Force parameter, and then retry
the command.
At line:1 char:22
+ $AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (Version:String) [Export-Csv], InvalidOperationException
+ FullyQualifiedErrorId : CannotAppendCsvWithMismatchedPropertyNames,Microsoft.PowerShell. ...
$AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append -Force
Import-Csv -Path .\ParmFile.csv
Name Version
---- -------
PowerShell 7.0
Windows PowerShell
Una expresión crea psCustomObject con propiedades Name y Version. Los valores se almacenan en la $Content
variable . La $Content
variable se envía a la canalización al Export-Csv
cmdlet . Export-Csv
usa el parámetro Path y guarda el ParmFile.csv
archivo en el directorio actual. El parámetro NoTypeInformation quita el encabezado de información #TYPE de la salida CSV y no es necesario en PowerShell 6.
Otra expresión crea un PSCustomObject con las propiedades Name y Edition . Los valores se almacenan en la $AdditionalContent
variable . La $AdditionalContent
variable se envía a la canalización al Export-Csv
cmdlet . El parámetro Append se usa para agregar los datos al archivo. Se produce un error en la anexión porque hay un error de coincidencia de nombre de propiedad entre La versión y la edición.
El Export-Csv
parámetro Force del cmdlet se usa para forzar la exportación para escribir en el archivo. La propiedad Edition se descarta. El Import-Csv
cmdlet usa el parámetro Path para mostrar el archivo ubicado en el directorio actual.
Parámetros
-Append
Use este parámetro para que Export-CSV
agregue la salida CSV al final del archivo especificado. Sin este parámetro, Export-CSV
reemplaza el contenido del archivo sin advertencia.
Este parámetro se incorporó en Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Le solicita su confirmación antes de ejecutar el cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Delimiter
Especifica un delimitador para separar los valores de propiedad. El valor predeterminado es una coma (,
). Escriba un carácter, como dos puntos (:
). Para especificar un punto y coma (;
), escríbalo entre comillas.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Especifica la codificación del archivo CSV exportado. El valor predeterminado es ASCII
.
Los valores aceptables para este parámetro son los siguientes:
ASCII
Usa el juego de caracteres ASCII (7 bits).BigEndianUnicode
Usa UTF-16 con el orden de bytes big-endian.Default
Usa la codificación que corresponde a la página de códigos activa del sistema (normalmente ANSI).OEM
Usa la codificación que corresponde a la página de códigos oem actual del sistema.Unicode
Usa UTF-16 con el orden de bytes little-endian.UTF7
Usa UTF-7.UTF8
Usa UTF-8.UTF32
Usa UTF-32 con el orden de bytes little-endian.
Type: | String |
Accepted values: | ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32 |
Position: | Named |
Default value: | ASCII |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Este parámetro permite Export-Csv
sobrescribir archivos con el atributo Solo lectura.
Cuando se combinan los parámetros Force y Append , los objetos que contienen propiedades no coincidentes se pueden escribir en un archivo CSV. Solo las propiedades que coinciden se escriben en el archivo. Se descartan las propiedades no coincidedas.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Especifica los objetos para exportar como cadenas CSV. Especifique una variable que contenga los objetos, o escriba un comando o una expresión que obtenga los objetos. También puede canalizar objetos a Export-CSV
.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Especifica la ruta de acceso al archivo de resultados CSV. A diferencia de Path, el valor del parámetro LiteralPath se usa exactamente como se escribe. Ninguno de los caracteres se interpreta como caracteres comodín. Si la ruta de acceso incluye caracteres de escape, use comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.
Type: | String |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoClobber
Use este parámetro para que Export-CSV
no sobrescriba un archivo existente. De forma predeterminada, si el archivo existe en la ruta de acceso especificada, Export-CSV
sobrescribe el archivo sin advertencia.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoTypeInformation
Quita el #TYPE
encabezado de información de la salida. Este parámetro se convirtió en el valor predeterminado en PowerShell 6.0 y se incluye para la compatibilidad con versiones anteriores.
Type: | SwitchParameter |
Aliases: | NTI |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Parámetro necesario que especifica la ubicación para guardar el archivo de salida CSV.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseCulture
Usa el separador de lista para la referencia cultural actual como delimitador de elementos. Para buscar el separador de lista de una referencia cultural, use el siguiente comando: (Get-Culture).TextInfo.ListSeparator
.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Impide que el cmdlet se procese o realice cambios. La salida muestra lo que sucedería si se ejecutara el cmdlet.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Puede canalizar cualquier objeto con un adaptador del Sistema de tipos extendidos (ETS) a este cmdlet.
Salidas
None
Este cmdlet no devuelve ningún resultado.
Notas
Windows PowerShell incluye los siguientes alias para Export-Csv
:
epcsv
El Export-CSV
cmdlet convierte los objetos que se envían a una serie de cadenas CSV y los guarda en el archivo de texto especificado. Puede usar Export-CSV
para guardar objetos en un archivo CSV y, a continuación, usar el Import-Csv
cmdlet para crear objetos a partir del archivo CSV.
En el archivo CSV, cada objeto se representa mediante una lista separada por caracteres de los valores de propiedad del objeto. Los valores de propiedad se convierten en cadenas mediante el método ToString(). Las cadenas se representan mediante el nombre del valor de propiedad. 'Export-CSV no exporta los métodos del objeto.
Las cadenas CSV se generan de la siguiente manera:
- De forma predeterminada, la primera cadena contiene el encabezado de información #TYPE seguido del nombre completo del tipo de objeto. Por ejemplo, #TYPE System.Diagnostics.Process.
- Si se usa NoTypeInformation , la primera cadena incluye los encabezados de columna. Los encabezados contienen los nombres de propiedad del primer objeto como una lista separada por caracteres.
- Las cadenas restantes contienen listas separadas por caracteres de los valores de propiedad de cada objeto.
Al enviar varios objetos a Export-CSV
, Export-CSV
organiza el archivo en función de las propiedades del primer objeto que envíe. Si los demás objetos no tienen una de las propiedades especificadas, el valor de propiedad de ese objeto será NULL, representado por dos comas consecutivas. Si los demás objetos tienen propiedades adicionales, esos valores de propiedad no se incluyen en el archivo.
Puede usar el Import-Csv
cmdlet para volver a crear objetos a partir de las cadenas CSV de los archivos. Los objetos resultantes son versiones CSV de los objetos originales que consisten en representaciones de cadena de los valores de propiedad y sin ningún método.
Los ConvertTo-Csv
cmdlets y ConvertFrom-Csv
convierten objetos en cadenas CSV y de cadenas CSV. Export-CSV
es igual ConvertTo-CSV
que , salvo que guarda las cadenas CSV en un archivo.