Export-Csv
Převede objekty na řadu řetězců hodnot oddělených čárkami (CSV) a uloží řetězce do souboru.
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
Rutina Export-CSV
vytvoří soubor CSV objektů, které odešlete. Každý objekt je řádek, který obsahuje čárkami oddělený seznam hodnot vlastností objektu. Pomocí rutiny Export-CSV
můžete vytvářet tabulky a sdílet data s programy, které jako vstup přijímají soubory CSV.
Objekty před odesláním do rutiny Export-CSV
neformátujte. Pokud Export-CSV
přijímá formátované objekty, soubor CSV obsahuje vlastnosti formátu, nikoli vlastnosti objektu. Pokud chcete exportovat pouze vybrané vlastnosti objektu, použijte rutinu Select-Object
.
Příklady
Příklad 1: Export vlastností procesu do souboru CSV
Tento příklad vybere Zpracovat objekty s konkrétními vlastnostmi a exportuje je do souboru 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
Rutina Get-Process
získá objekty Process . Parametr Name filtruje výstup tak, aby zahrnoval pouze objekty procesu WmiPrvSE. Objekty procesu se odesílají kanálem do rutiny Select-Object
. Select-Object
pomocí parametru Property vybere podmnožinu vlastností objektu procesu. Objekty procesu se odesílají kanálem do rutiny Export-Csv
. Export-Csv
převede objekty procesu na řadu řetězců CSV. Parametr Path určuje, že WmiData.csv soubor je uložen v aktuálním adresáři. Parametr NoTypeInformation odebere hlavičku #TYPE informací z výstupu sdíleného svazku clusteru a v PowerShellu 6 se nevyžaduje. Rutina Import-Csv
pomocí parametru Path zobrazí soubor umístěný v aktuálním adresáři.
Příklad 2: Export procesů do souboru odděleného čárkami
Tento příklad získá objekty Process a exportuje je do souboru 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", ...
Rutina Get-Process
získá objekty Process . Objekty procesu se odesílají kanálem do rutiny Export-Csv
. Export-Csv
převede objekty procesu na řadu řetězců CSV.
Parametr Path určuje, že Processes.csv soubor je uložen v aktuálním adresáři. Parametr NoTypeInformation odebere hlavičku #TYPE informací z výstupu sdíleného svazku clusteru a v PowerShellu 6 se nevyžaduje. Rutina Get-Content
pomocí parametru Path zobrazí soubor umístěný v aktuálním adresáři.
Příklad 3: Export procesů do souboru odděleného středníkem
Tento příklad získá Process objekty a exportuje objekty do souboru s oddělovačem středníkem.
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"; ...
Rutina Get-Process
získá objekty Process . Objekty procesu se odesílají kanálem do rutiny Export-Csv
. Export-Csv
převede objekty procesu na řadu řetězců CSV.
Parametr Path určuje, že Processes.csv soubor je uložen v aktuálním adresáři. Parametr Oddělovač určuje středník k oddělení řetězcových hodnot. Parametr NoTypeInformation odebere hlavičku #TYPE informací z výstupu sdíleného svazku clusteru a v PowerShellu 6 se nevyžaduje. Rutina Get-Content
pomocí parametru Path zobrazí soubor umístěný v aktuálním adresáři.
Příklad 4: Procesy exportu pomocí oddělovače seznamu aktuální jazykové verze
Tento příklad získá process objekty a exportuje objekty do souboru. Oddělovač je oddělovač seznamu aktuální jazykové verze.
(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", ...
Rutina Get-Culture
používá vnořené vlastnosti TextInfo a ListSeparator a zobrazí výchozí oddělovač seznamu aktuální jazykové verze. Rutina Get-Process
získá objekty Process .
Objekty procesu se odesílají kanálem do rutiny Export-Csv
. Export-Csv
převede objekty procesu na řadu řetězců CSV. Parametr Path určuje, že Processes.csv soubor je uložen v aktuálním adresáři. Parametr UseCulture používá jako oddělovač výchozí oddělovač seznamu aktuální jazykové verze. Parametr NoTypeInformation odebere hlavičku #TYPE informací z výstupu sdíleného svazku clusteru a v PowerShellu 6 se nevyžaduje. Rutina Get-Content
pomocí parametru Path zobrazí soubor umístěný v aktuálním adresáři.
Příklad 5: Procesy exportu s informacemi o typu
Tento příklad vysvětluje, jak zahrnout informace #TYPE záhlaví do souboru CSV. Hlavička #TYPE je výchozí ve verzích starších než 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", ...
Rutina Get-Process
získá objekty Process . Objekty procesu se odesílají kanálem do rutiny Export-Csv
. Export-Csv
převede objekty procesu na řadu řetězců CSV.
Parametr Path určuje, že Processes.csv soubor je uložen v aktuálním adresáři. Rutina Get-Content
pomocí parametru Path zobrazí soubor umístěný v aktuálním adresáři.
Příklad 6: Export objektů a jejich připojení k souboru CSV
Tento příklad popisuje, jak exportovat objekty do souboru CSV a přidat objekty do existujícího souboru pomocí parametru Append .
$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"
Rutina Get-Service
získá objekty služby. Parametr DisplayName vrátí služby, které obsahují slovo Application. Objekty služby se odesílají kanálem do rutiny Select-Object
. Select-Object
používá parametr Property k určení vlastností DisplayName a Status . Proměnná $AppService
ukládá objekty.
Objekty $AppService
se odesílají do kanálu rutiny Export-Csv
. Export-Csv
převede objekty služby na řadu řetězců CSV. Parametr Path určuje, že Services.csv soubor je uložen v aktuálním adresáři. Parametr NoTypeInformation odebere hlavičku #TYPE informací z výstupu sdíleného svazku clusteru a v PowerShellu 6 se nevyžaduje. Rutina Get-Content
pomocí parametru Path zobrazí soubor umístěný v aktuálním adresáři.
Rutiny Get-Service
a Select-Object
se opakují pro služby, které obsahují slovo Windows. Proměnná $WinService
ukládá objekty služby. Rutina Export-Csv
pomocí parametru Append určuje, že $WinService
se objekty přidají do existujícího souboru Services.csv. Rutina Get-Content
se opakuje, aby se zobrazil aktualizovaný soubor, který obsahuje připojená data.
Příklad 7: Rutina formátování v rámci kanálu vytvoří neočekávané výsledky
Tento příklad ukazuje, proč je důležité nepoužívat rutinu formátu v rámci kanálu. Při přijetí neočekávaného výstupu vyřešte potíže se syntaxí kanálu.
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",,,,,
Rutina Get-Date
získá objekt DateTime . Objekt se odešle do kanálu rutiny Select-Object
. Select-Object
pomocí parametru Property vybere podmnožinu vlastností objektu. Objekt se odešle do kanálu rutiny Export-Csv
. Export-Csv
převede objekt do formátu CSV. Parametr Path určuje, že DateTime.csv soubor je uložen v aktuálním adresáři. Parametr NoTypeInformation odebere hlavičku #TYPE informací z výstupu sdíleného svazku clusteru a v PowerShellu 6 se nevyžaduje. Rutina Get-Content
pomocí parametru Path zobrazí soubor CSV umístěný v aktuálním adresáři.
Když se rutina Format-Table
použije v rámci kanálu k výběru vlastností, obdrží se neočekávané výsledky. Format-Table
odesílá objekty formátu tabulky v kanálu do rutiny Export-Csv
namísto objektu DateTime . Export-Csv
převede objekty formátu tabulky na řadu řetězců CSV. Rutina Get-Content
zobrazí soubor CSV, který obsahuje objekty formátu tabulky.
Příklad 8: Použití parametru Force k přepsání souborů jen pro čtení
Tento příklad vytvoří prázdný soubor jen pro čtení a použije parametr Force k aktualizaci souboru.
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"; ...
Rutina New-Item
používá parametry Path a ItemType k vytvoření souboru ReadOnly.csv v aktuálním adresáři. Rutina Set-ItemProperty
používá parametry Name a Value ke změně vlastnosti IsReadOnly souboru na true. Rutina Get-Process
získá objekty Process . Objekty procesu se odesílají kanálem do rutiny Export-Csv
. Export-Csv
převede objekty procesu na řadu řetězců CSV. Parametr Path určuje, že ReadOnly.csv soubor je uložen v aktuálním adresáři. Parametr NoTypeInformation odebere hlavičku #TYPE informací z výstupu sdíleného svazku clusteru a v PowerShellu 6 se nevyžaduje. Výstup ukazuje, že soubor není zapsán, protože přístup byl odepřen.
Do rutiny Export-Csv
se přidá parametr Force, který vynutí zápis exportu do souboru. Rutina Get-Content
pomocí parametru Path zobrazí soubor umístěný v aktuálním adresáři.
Příklad 9: Použití parametru Force s připojením
Tento příklad ukazuje, jak používat parametry Force a Append . Když se tyto parametry zkombinují, neodpovídající vlastnosti objektu se dají zapsat do souboru 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
Výraz vytvoří PSCustomObject s vlastnostmi Name a Version . Hodnoty se ukládají do $Content
proměnné . Proměnná $Content
se odešle do kanálu do rutiny Export-Csv
. Export-Csv
použije parametr Path a uloží soubor ParmFile.csv do aktuálního adresáře. Parametr NoTypeInformation odebere hlavičku #TYPE informací z výstupu sdíleného svazku clusteru a v PowerShellu 6 se nevyžaduje.
Jiný výraz vytvoří PSCustomObject s name a edition vlastnosti. Hodnoty se ukládají do $AdditionalContent
proměnné . Proměnná $AdditionalContent
se odešle do kanálu do rutiny Export-Csv
. K přidání dat do souboru se používá parametr Append . Připojení se nezdaří, protože mezi verzí a edicí došlo k neshodě názvů vlastností.
Parametr Export-Csv
Force rutiny slouží k vynucení zápisu exportu do souboru. Vlastnost Edition je zahozena. Rutina Import-Csv
pomocí parametru Path zobrazí soubor umístěný v aktuálním adresáři.
Parametry
-Append
Pomocí tohoto parametru Export-CSV
přidáte výstup CSV na konec zadaného souboru. Bez tohoto parametru Export-CSV
nahradí obsah souboru bez upozornění.
Tento parametr byl zaveden v Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Před spuštěním rutiny zobrazí výzvu k potvrzení.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Delimiter
Určuje oddělovač pro oddělení hodnot vlastností. Výchozí hodnota je čárka (,
). Zadejte znak, například dvojtečku (:
). Pokud chcete zadat středník (;
), uzavřete ho do uvozovek.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Určuje typ kódování cílového souboru. Výchozí hodnota je ASCII.
Přijatelné hodnoty pro tento parametr jsou následující:
- ASCII Používá 7bitovou znakovou sadu ASCII.
- BigEndianUnicode Používá UTF-16 s pořadím bajtů big-endian.
- Výchozí Použije kódování, které odpovídá aktivní znakové stránce systému (obvykle ANSI).
- OEM Použije kódování, které odpovídá aktuální znakové stránce výrobce OEM systému.
- Unicode Používá UTF-16 s pořadím bajtů little-endian.
- UTF7 Používá UTF-7.
- UTF8 Používá UTF-8.
- UTF32 Používá UTF-32 s pořadím bajtů 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
Tento parametr umožňuje Export-Csv
přepsat soubory atributem Jen pro čtení .
Při kombinaci parametrů Force a Append lze do souboru CSV zapsat objekty, které obsahují neodpovídající vlastnosti. Do souboru se zapisují pouze vlastnosti, které se shodují. Neodpovídající vlastnosti se zahodí.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Určuje objekty, které se mají exportovat jako řetězce CSV. Zadejte proměnnou, která obsahuje objekty, nebo zadejte příkaz nebo výraz, který získá objekty. Objekty můžete také převést do Export-CSV
kanálu .
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Určuje cestu k výstupnímu souboru CSV. Na rozdíl od path se hodnota parametru LiteralPath používá přesně tak, jak je zadána. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, použijte jednoduché uvozovky. Jednoduché uvozovky říkají PowerShellu, že nemá interpretovat žádné znaky jako řídicí sekvence.
Type: | String |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoClobber
Tento parametr použijte, Export-CSV
aby nedošlo k přepsání existujícího souboru. Pokud soubor existuje v zadané cestě, Export-CSV
ve výchozím nastavení ho bez upozornění přepíše.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoTypeInformation
Odebere z výstupu hlavičku #TYPE informací. Tento parametr se stal výchozím v PowerShellu 6.0 a je zahrnutý kvůli zpětné kompatibilitě.
Type: | SwitchParameter |
Aliases: | NTI |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Povinný parametr, který určuje umístění pro uložení výstupního souboru CSV.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseCulture
Použije oddělovač seznamu pro aktuální jazykovou verzi jako oddělovač položek. K vyhledání oddělovače seznamu pro jazykovou verzi použijte následující příkaz: (Get-Culture).TextInfo.ListSeparator
.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Zabrání zpracování rutiny nebo provádění změn. Výstup ukazuje, co by se stalo, kdyby se rutina spustila.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Vstupy
Libovolný objekt s adaptérem ETS (Extended Type System) můžete připojit do Export-CSV
kanálu .
Výstupy
Seznam CSV se odešle do souboru určeného v parametru Path.
Poznámky
Rutina Export-CSV
převede objekty, které odešlete, na řadu řetězců CSV a uloží je do zadaného textového souboru. Pomocí příkazu Export-CSV
můžete uložit objekty do souboru CSV a pak pomocí Import-Csv
rutiny vytvořit objekty ze souboru CSV.
V souboru CSV je každý objekt reprezentován čárkami odděleným seznamem hodnot vlastností objektu. Hodnoty vlastností se převedou na řetězce pomocí metody ToString(). Řetězce jsou reprezentovány názvem hodnoty vlastnosti. Export-CSV neexportuje metody objektu.
Výstup řetězců sdíleného svazku clusteru je následující:
- Ve výchozím nastavení první řetězec obsahuje hlavičku #TYPE informací následovanou plně kvalifikovaným názvem typu objektu. Například #TYPE System.Diagnostics.Process.
- Pokud se použije NoTypeInformation , první řetězec obsahuje záhlaví sloupců. Záhlaví obsahují názvy vlastností prvního objektu jako seznam oddělený čárkami.
- Zbývající řetězce obsahují čárkami oddělené seznamy hodnot vlastností jednotlivých objektů.
Když do Export-CSV
odešlete více objektů, Export-CSV
nástroj uspořádá soubor na základě vlastností prvního objektu, který odešlete. Pokud zbývající objekty nemají jednu ze zadaných vlastností, hodnota vlastnosti tohoto objektu je null, jak je reprezentováno dvěma po sobě jdoucími čárkami. Pokud mají zbývající objekty další vlastnosti, nejsou tyto hodnoty vlastností zahrnuty do souboru.
K opětovnému vytvoření objektů z řetězců CSV v souborech můžete použít Import-Csv
rutinu . Výsledné objekty jsou verze CSV původních objektů, které se skládají z řetězcových reprezentací hodnot vlastností a žádné metody.
Rutiny ConvertTo-Csv
a ConvertFrom-Csv
převádějí objekty na řetězce CSV a z řetězců CSV. Export-CSV
je stejný jako ConvertTo-CSV
s tím rozdílem, že ukládá řetězce CSV do souboru.