Export-Csv
Converte gli oggetti in una serie di stringhe delimitate da virgole (CSV) e salva le stringhe in un file.
Sintassi
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>]
Descrizione
Il Export-CSV
cmdlet crea un file CSV degli oggetti inviati. Ogni oggetto è una riga che include un elenco delimitato da virgole dei valori delle proprietà dell'oggetto. È possibile usare il Export-CSV
cmdlet per creare fogli di calcolo e condividere dati con programmi che accettano file CSV come input.
Non formattare gli oggetti prima di inviarli al Export-CSV
cmdlet. Se Export-CSV
riceve oggetti formattati il file CSV contiene le proprietà di formato anziché le proprietà dell'oggetto. Per esportare solo le proprietà selezionate di un oggetto, usare il Select-Object
cmdlet.
Esempio
Esempio 1: Esportare le proprietà del processo in un file CSV
In questo esempio vengono selezionati oggetti Process con proprietà specifiche, esporta gli oggetti in un file 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
Il Get-Process
cmdlet ottiene gli oggetti Process . Il parametro Name filtra l'output per includere solo gli oggetti di processo WmiPrvSE. Gli oggetti di processo vengono inviati alla pipeline al Select-Object
cmdlet. Select-Object
usa il parametro Property per selezionare un subset di proprietà dell'oggetto processo. Gli oggetti di processo vengono inviati alla pipeline al Export-Csv
cmdlet. Export-Csv
converte gli oggetti di processo in una serie di stringhe CSV. Il parametro Path specifica che il file di WmiData.csv viene salvato nella directory corrente. Il parametro NoTypeInformation rimuove l'intestazione delle informazioni #TYPE dall'output CSV e non è obbligatorio in PowerShell 6. Il Import-Csv
cmdlet usa il parametro Path per visualizzare il file presente nella directory corrente.
Esempio 2: Esportare i processi in un file delimitato da virgole
Questo esempio ottiene oggetti Process ed esporta gli oggetti in un file 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", ...
Il Get-Process
cmdlet ottiene oggetti Process . Gli oggetti di processo vengono inviati alla pipeline al Export-Csv
cmdlet. Export-Csv
converte gli oggetti di processo in una serie di stringhe CSV.
Il parametro Path specifica che il file di Processes.csv viene salvato nella directory corrente. Il parametro NoTypeInformation rimuove l'intestazione delle informazioni #TYPE dall'output CSV e non è obbligatorio in PowerShell 6. Il Get-Content
cmdlet usa il parametro Path per visualizzare il file presente nella directory corrente.
Esempio 3: Esportare processi in un file delimitato da punti e virgola
Questo esempio ottiene oggetti Process ed esporta gli oggetti in un file con un delimitatore a punti e virgola.
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"; ...
Il Get-Process
cmdlet ottiene oggetti Process . Gli oggetti di processo vengono inviati alla pipeline al Export-Csv
cmdlet. Export-Csv
converte gli oggetti di processo in una serie di stringhe CSV.
Il parametro Path specifica che il file di Processes.csv viene salvato nella directory corrente. Il parametro Delimiter specifica un punto e virgola per separare i valori stringa. Il parametro NoTypeInformation rimuove l'intestazione delle informazioni #TYPE dall'output CSV e non è obbligatorio in PowerShell 6. Il Get-Content
cmdlet usa il parametro Path per visualizzare il file presente nella directory corrente.
Esempio 4: Esportare processi usando il separatore elenco delle impostazioni cultura corrente
Questo esempio ottiene oggetti Process ed esporta gli oggetti in un file. Il delimitatore è il separatore elenco delle impostazioni cultura corrente.
(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", ...
Il Get-Culture
cmdlet usa le proprietà annidate TextInfo e ListSeparator e visualizza il separatore di elenco predefinito delle impostazioni cultura correnti. Il Get-Process
cmdlet ottiene oggetti Process .
Gli oggetti di processo vengono inviati alla pipeline al Export-Csv
cmdlet. Export-Csv
converte gli oggetti di processo in una serie di stringhe CSV. Il parametro Path specifica che il file di Processes.csv viene salvato nella directory corrente. Il parametro UseCulture usa il separatore di elenco predefinito della cultura corrente come delimitatore. Il parametro NoTypeInformation rimuove l'intestazione delle informazioni #TYPE dall'output CSV e non è obbligatorio in PowerShell 6. Il Get-Content
cmdlet usa il parametro Path per visualizzare il file presente nella directory corrente.
Esempio 5: Esportare processi con informazioni sul tipo
In questo esempio viene illustrato come includere le informazioni sull'intestazione #TYPE in un file CSV. L'intestazione #TYPE è l'impostazione predefinita nelle versioni precedenti 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", ...
Il Get-Process
cmdlet ottiene oggetti Process . Gli oggetti di processo vengono inviati alla pipeline al Export-Csv
cmdlet. Export-Csv
converte gli oggetti di processo in una serie di stringhe CSV.
Il parametro Path specifica che il file di Processes.csv viene salvato nella directory corrente. Il Get-Content
cmdlet usa il parametro Path per visualizzare il file presente nella directory corrente.
Esempio 6: Esportare e aggiungere oggetti a un file CSV
In questo esempio viene descritto come esportare oggetti in un file CSV e usare il parametro Append per aggiungere oggetti a un file esistente.
$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"
Il Get-Service
cmdlet ottiene oggetti di servizio. Il parametro DisplayName restituisce i servizi che contengono la parola Application. Gli oggetti del servizio vengono inviati alla pipeline al Select-Object
cmdlet. Select-Object
usa il parametro Property per specificare le proprietà DisplayName e Status . La $AppService
variabile archivia gli oggetti.
Gli $AppService
oggetti vengono inviati alla pipeline al Export-Csv
cmdlet. Export-Csv
converte gli oggetti del servizio in una serie di stringhe CSV. Il parametro Path specifica che il file di Services.csv viene salvato nella directory corrente. Il parametro NoTypeInformation rimuove l'intestazione delle informazioni #TYPE dall'output CSV e non è obbligatorio in PowerShell 6. Il Get-Content
cmdlet usa il parametro Path per visualizzare il file presente nella directory corrente.
I Get-Service
cmdlet e Select-Object
vengono ripetuti per i servizi che contengono la parola Windows. La $WinService
variabile archivia gli oggetti del servizio. Il Export-Csv
cmdlet usa il parametro Append per specificare che gli $WinService
oggetti vengono aggiunti al file di Services.csv esistente. Il Get-Content
cmdlet viene ripetuto per visualizzare il file aggiornato che include i dati aggiunti.
Esempio 7: Formattare il cmdlet all'interno di una pipeline crea risultati imprevisti
Questo esempio illustra perché non è importante usare un cmdlet di formato all'interno di una pipeline. Quando viene ricevuto un output imprevisto, risolvere i problemi relativi alla sintassi della pipeline.
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",,,,,
Il Get-Date
cmdlet ottiene l'oggetto DateTime . L'oggetto viene inviato alla pipeline al Select-Object
cmdlet. Select-Object
usa il parametro Property per selezionare un subset di proprietà dell'oggetto. L'oggetto viene inviato alla pipeline al Export-Csv
cmdlet. Export-Csv
converte l'oggetto in un formato CSV. Il parametro Path specifica che il file di DateTime.csv viene salvato nella directory corrente. Il parametro NoTypeInformation rimuove l'intestazione delle informazioni #TYPE dall'output CSV e non è obbligatorio in PowerShell 6. Il Get-Content
cmdlet usa il parametro Path per visualizzare il file CSV presente nella directory corrente.
Quando il Format-Table
cmdlet viene usato all'interno della pipeline per selezionare le proprietà impreviste, vengono ricevuti risultati imprevisti. Format-Table
invia oggetti di formato tabella verso il basso alla pipeline al Export-Csv
cmdlet anziché all'oggetto DateTime . Export-Csv
converte gli oggetti di formato tabella in una serie di stringhe CSV. Il Get-Content
cmdlet visualizza il file CSV che contiene gli oggetti di formato tabella.
Esempio 8: Uso del parametro Force per sovrascrivere i file di sola lettura
In questo esempio viene creato un file vuoto e di sola lettura e viene usato il parametro Force per aggiornare il file.
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"; ...
Il New-Item
cmdlet usa i parametri Path e ItemType per creare il file ReadOnly.csv nella directory corrente. Il Set-ItemProperty
cmdlet usa i parametri Name and Value per modificare la proprietà IsReadOnly del file su true. Il Get-Process
cmdlet ottiene oggetti Process . Gli oggetti di processo vengono inviati alla pipeline al Export-Csv
cmdlet. Export-Csv
converte gli oggetti di processo in una serie di stringhe CSV. Il parametro Path specifica che il file di ReadOnly.csv viene salvato nella directory corrente. Il parametro NoTypeInformation rimuove l'intestazione delle informazioni #TYPE dall'output CSV e non è obbligatorio in PowerShell 6. L'output mostra che il file non è scritto perché l'accesso viene negato.
Il parametro Force viene aggiunto al Export-Csv
cmdlet per forzare l'esportazione per scrivere nel file. Il Get-Content
cmdlet usa il parametro Path per visualizzare il file presente nella directory corrente.
Esempio 9: Uso del parametro Force con Accodamento
In questo esempio viene illustrato come usare i parametri Force e Append . Quando questi parametri vengono combinati, le proprietà degli oggetti non corrispondenti possono essere scritte in un file CSV.
$Content = [PSCustomObject]@{Name = 'PowerShell Core'; Version = '6.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 Core 6.0
Windows PowerShell
Un'espressione crea le proprietà PSCustomObject con nome e versione . I valori vengono archiviati nella $Content
variabile. La $Content
variabile viene inviata alla pipeline al Export-Csv
cmdlet. Export-Csv
usa il parametro Path e salva il file ParmFile.csv nella directory corrente. Il parametro NoTypeInformation rimuove l'intestazione delle informazioni #TYPE dall'output CSV e non è obbligatorio in PowerShell 6.
Un'altra espressione crea un oggetto PSCustomObject con le proprietà Name e Edition . I valori vengono archiviati nella $AdditionalContent
variabile. La $AdditionalContent
variabile viene inviata alla pipeline al Export-Csv
cmdlet. Il parametro Append viene usato per aggiungere i dati al file. L'aggiunta ha esito negativo perché è presente una mancata corrispondenza tra versione e edizione.
Il Export-Csv
parametro Force del cmdlet viene usato per forzare l'esportazione per scrivere nel file. La proprietà Edition viene eliminata. Il Import-Csv
cmdlet usa il parametro Path per visualizzare il file presente nella directory corrente.
Parametri
-Append
Usare questo parametro in modo da Export-CSV
aggiungere l'output CSV alla fine del file specificato. Senza questo parametro, Export-CSV
sostituisce il contenuto del file senza avviso.
Questo parametro è stato introdotto in Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Richiede la conferma dell'utente prima di eseguire il cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Delimiter
Specifica un delimitatore per separare i valori delle proprietà. Il valore predefinito è una virgola (,
). Immettere un carattere, ad esempio due punti (:
). Per specificare un punto e virgola (;
), racchiuderlo tra virgolette.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Specifica il tipo di codifica per il file di destinazione. Il valore predefinito è ASCII.
I valori accettabili per questo parametro sono i seguenti:
- ASCII Usa il set di caratteri ASCII (a 7 bit).
- BigEndianUnicode Usa UTF-16 con l'ordine di byte big-endian.
- Predefinito Usa la codifica corrispondente alla tabella codici attiva del sistema (in genere ANSI).
- OEM Usa la codifica corrispondente alla tabella codici OEM corrente del sistema.
- Unicode Usa UTF-16 con l'ordine di byte little-endian.
- UTF7 Usa UTF-7.
- UTF8 Usa UTF-8.
- UTF32 Usa UTF-32 con l'ordine di byte 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
Questo parametro consente di Export-Csv
sovrascrivere i file con l'attributo Read Only .
Quando i parametri Force e Append vengono combinati, gli oggetti che contengono proprietà non corrispondenti possono essere scritti in un file CSV. Solo le proprietà che corrispondono al file. Le proprietà non corrispondenti vengono rimosse.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Specifica gli oggetti da esportare come stringhe CSV. Immettere una variabile che contiene gli oggetti oppure digitare un comando o un'espressione che ottiene gli oggetti. È anche possibile inviare oggetti pipe a Export-CSV
.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Specifica il percorso del file di output CSV. A differenza di Path, il valore del parametro LiteralPath viene usato esattamente com'è digitato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri di escape, usare virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare i caratteri come sequenze di escape.
Type: | String |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoClobber
Usare questo parametro in modo da Export-CSV
non sovrascrivere un file esistente. Per impostazione predefinita, se il file esiste nel percorso specificato, Export-CSV
sovrascrive il file senza avviso.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoTypeInformation
Rimuove l'intestazione di informazioni #TYPE dall'output. Questo parametro è diventato il valore predefinito in PowerShell 6.0 ed è incluso per la compatibilità con le versioni precedenti.
Type: | SwitchParameter |
Aliases: | NTI |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Parametro obbligatorio che specifica il percorso per salvare il file di output CSV.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseCulture
Usa il separatore di elenco per le impostazioni cultura correnti come delimitatore di elementi. Per trovare il separatore di elenco per le impostazioni cultura, usare il comando seguente: (Get-Culture).TextInfo.ListSeparator
.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Impedisce l'elaborazione o l'esecuzione di modifiche del cmdlet. L'output mostra cosa accadrebbe se il cmdlet fosse stato eseguito.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
È possibile inviare pipe a qualsiasi oggetto con un adattatore ETS (Extended Type System) in Export-CSV
.
Output
L'elenco CSV viene inviato al file indicato nel parametro Path.
Note
Il Export-CSV
cmdlet converte gli oggetti inviati in una serie di stringhe CSV e li salva nel file di testo specificato. È possibile usare Export-CSV
per salvare gli oggetti in un file CSV e quindi usare il Import-Csv
cmdlet per creare oggetti dal file CSV.
Nel file CSV ogni oggetto è rappresentato da un elenco dei valori delle proprietà dell'oggetto delimitati da virgole. I valori delle proprietà vengono convertiti in stringhe usando il metodo ToString(). Le stringhe sono rappresentate dal nome del valore della proprietà. 'Export-CSV non esporta i metodi dell'oggetto.
Le stringhe CSV sono output come indicato di seguito:
- Per impostazione predefinita , la prima stringa contiene l'intestazione #TYPE informazioni seguita dal nome completo del tipo di oggetto. Ad esempio, #TYPE System.Diagnostics.Process.
- Se NoTypeInformation viene usata la prima stringa include le intestazioni di colonna. Le intestazioni contengono i nomi delle proprietà del primo oggetto come elenco delimitato da virgole.
- Le stringhe rimanenti contengono elenchi delimitati da virgole dei valori delle proprietà di ogni oggetto.
Quando si inviano più oggetti a Export-CSV
, Export-CSV
organizza il file in base alle proprietà del primo oggetto inviato. Se gli oggetti rimanenti non hanno una delle proprietà specificate, il valore della proprietà di tale oggetto è Null e sarà rappresentato da due virgole consecutive. Se gli oggetti rimanenti hanno proprietà aggiuntive, tali valori delle proprietà non verranno inclusi nel file.
È possibile usare il Import-Csv
cmdlet per ricreare oggetti dalle stringhe CSV nei file. Gli oggetti risultanti sono versioni CSV degli oggetti originali, costituiti da rappresentazioni di stringa dei valori delle proprietà e nessun metodo.
I ConvertTo-Csv
cmdlet e ConvertFrom-Csv
converteno oggetti in stringhe CSV e da stringhe CSV. Export-CSV
è uguale ConvertTo-CSV
a , ad eccezione del fatto che salva le stringhe CSV in un file.