Import-Csv
Vytvoří vlastní objekty podobné tabulce z položek v souboru hodnot oddělených znakem (CSV).
Syntax
Import-Csv
[[-Delimiter] <Char>]
[-Path] <String[]>
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
[[-Delimiter] <Char>]
-LiteralPath <String[]>
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
[-Path] <String[]>
-UseCulture
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
-LiteralPath <String[]>
-UseCulture
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Description
Rutina Import-Csv
vytvoří vlastní objekty podobné tabulce z položek v souborech CSV. Každý sloupec v souboru CSV se stane vlastností vlastního objektu a položky v řádcích se stanou hodnotami vlastností. Import-Csv
funguje na jakémkoli souboru CSV, včetně souborů generovaných rutinou Export-Csv
.
Pomocí parametrů Import-Csv
rutiny můžete zadat řádek záhlaví sloupce a oddělovač položek nebo použít Import-Csv
oddělovač seznamu pro aktuální jazykovou verzi jako oddělovač položek.
Objekty můžete také převést na řetězce CSV (a zpět) pomocí ConvertTo-Csv
rutin a ConvertFrom-Csv
objektů. Tyto rutiny jsou stejné jako Export-CSV
rutiny a Import-Csv
rutiny s tím rozdílem, že se nezabývá soubory.
Pokud položka řádku záhlaví v souboru CSV obsahuje prázdnou nebo nulovou hodnotu, PowerShell vloží výchozí název řádku záhlaví a zobrazí zprávu s upozorněním.
Počínaje PowerShellem 6.0 Import-Csv
teď podporuje formát souboru protokolu W3C Extended.
Příklady
Příklad 1: Import objektů procesu
Tento příklad ukazuje, jak exportovat a pak importovat soubor CSV procesních objektů.
Get-Process | Export-Csv -Path .\Processes.csv
$P = Import-Csv -Path .\Processes.csv
$P | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
BasePriority NoteProperty string BasePriority=8
Company NoteProperty string Company=Microsoft Corporation
...
$P | Format-Table
Name SI Handles VM WS PM NPM Path
---- -- ------- -- -- -- --- ----
ApplicationFrameHost 4 407 2199293489152 15884288 15151104 23792 C:\WINDOWS\system32\ApplicationFrameHost.exe
...
wininit 0 157 2199112204288 4591616 1630208 10376
winlogon 4 233 2199125549056 7659520 2826240 10992 C:\WINDOWS\System32\WinLogon.exe
WinStore.App 4 846 873435136 33652736 26607616 55432 C:\Program Files\WindowsApps\Microsoft.WindowsStore_11712.1001.13.0_x64__8weky...
WmiPrvSE 0 201 2199100219392 8830976 3297280 10632 C:\WINDOWS\system32\wbem\wmiprvse.exe
WmiPrvSE 0 407 2199157727232 18509824 12922880 16624 C:\WINDOWS\system32\wbem\wmiprvse.exe
WUDFHost 0 834 2199310204928 51945472 87441408 24984 C:\Windows\System32\WUDFHost.exe
Rutina Get-Process
odesílá objekty procesu do kanálu .Export-Csv
Rutina Export-Csv
převede objekty procesu na řetězce CSV a uloží řetězce do souboru Processes.csv. Rutina Import-Csv
importuje řetězce CSV ze souboru Processes.csv.
Řetězce jsou uloženy v $P
proměnné. Proměnná $P
se odešle do rutiny Get-Member
, která zobrazuje vlastnosti importovaných řetězců CSV. Proměnná $P
se odešle do Format-Table
rutiny a zobrazí objekty.
Příklad 2: Určení oddělovače
Tento příklad ukazuje, jak použít parametr Oddělovač rutiny Import-Csv
.
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table
Rutina Get-Process
odesílá objekty procesu do kanálu .Export-Csv
Rutina Export-Csv
převede objekty procesu na řetězce CSV a uloží řetězce do souboru Processes.csv.
Parametr Oddělovač slouží k určení oddělovače dvojtečky. Rutina Import-Csv
importuje řetězce CSV ze souboru Processes.csv. Řetězce jsou uloženy v $P
proměnné. Do $P
proměnné se odešle kanál do rutiny Format-Table
.
Příklad 3: Určení aktuální jazykové verze oddělovače
Tento příklad ukazuje, jak použít rutinu Import-Csv
s parametrem UseCulture .
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture
Import-Csv -Path .\Processes.csv -UseCulture
Rutina Get-Culture
používá vnořené vlastnosti TextInfo a ListSeparator k získání výchozího oddělovače seznamu aktuální jazykové verze. Rutina Get-Process
odesílá objekty procesu do kanálu .Export-Csv
Rutina Export-Csv
převede objekty procesu na řetězce CSV a uloží řetězce do souboru Processes.csv. Parametr UseCulture používá výchozí oddělovač seznamu aktuální jazykové verze. Rutina Import-Csv
importuje řetězce CSV ze souboru Processes.csv.
Příklad 4: Změna názvů vlastností v importovaném objektu
Tento příklad ukazuje, jak pomocí parametru Import-Csv
Header změnit názvy vlastností ve výsledném importovaném objektu.
Start-Job -ScriptBlock { Get-Process } | Export-Csv -Path .\Jobs.csv -NoTypeInformation
$Header = 'State', 'MoreData', 'StatusMessage', 'Location', 'Command', 'StateInfo', 'Finished',
'InstanceId', 'Id', 'Name', 'ChildJobs', 'BeginTime', 'EndTime', 'JobType', 'Output',
'Error', 'Progress', 'Verbose', 'Debug', 'Warning', 'Information'
# Delete the default header from file
$A = Get-Content -Path .\Jobs.csv
$A = $A[1..($A.Count - 1)]
$A | Out-File -FilePath .\Jobs.csv
$J = Import-Csv -Path .\Jobs.csv -Header $Header
$J
State : Running
MoreData : True
StatusMessage :
Location : localhost
Command : Get-Process
StateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : a259eb63-6824-4b97-a033-305108ae1c2e
Id : 1
Name : Job1
ChildJobs : System.Collections.Generic.List`1[System.Management.Automation.Job]
BeginTime : 12/20/2018 18:59:57
EndTime :
JobType : BackgroundJob
Output : System.Management.Automation.PSDataCollection`1[System.Management.Automation.PSObject]
Error : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ErrorRecord]
Progress : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ProgressRecord]
Verbose : System.Management.Automation.PSDataCollection`1[System.Management.Automation.VerboseRecord]
Debug : System.Management.Automation.PSDataCollection`1[System.Management.Automation.DebugRecord]
Warning : System.Management.Automation.PSDataCollection`1[System.Management.Automation.WarningRecord]
Information : System.Management.Automation.PSDataCollection`1[System.Management.Automation.InformationRecord]
Rutina Start-Job
spustí úlohu na pozadí, která běží Get-Process
. Do rutiny se odešle Export-Csv
objekt úlohy a převede se na řetězec CSV. Parametr NoTypeInformation odebere hlavičku informací o typu z výstupu CSV a je volitelná v PowerShellu v6 a vyšší. Proměnná $Header
obsahuje vlastní hlavičku, která nahrazuje následující výchozí hodnoty: HasMoreData, JobStateInfo, PSBeginTime, PSEndTime a PSJobTypeName. Proměnná $A
používá rutinu Get-Content
k získání řetězce CSV ze souboru Jobs.csv. Proměnná $A
slouží k odebrání výchozí hlavičky ze souboru. Rutina Out-File
uloží novou verzi souboru Jobs.csv do $A
proměnné. Rutina Import-Csv
naimportuje soubor Jobs.csv a použije parametr Header k použití $Header
proměnné. Proměnná $J
obsahuje importovaný objekt PSCustomObject a zobrazí objekt v konzole PowerShellu.
Příklad 5: Vytvoření vlastního objektu pomocí souboru CSV
Tento příklad ukazuje, jak vytvořit vlastní objekt v PowerShellu pomocí souboru CSV.
Get-Content -Path .\Links.csv
113207,about_Aliases
113208,about_Arithmetic_Operators
113209,about_Arrays
113210,about_Assignment_Operators
113212,about_Automatic_Variables
113213,about_Break
113214,about_Command_Precedence
113215,about_Command_Syntax
144309,about_Comment_Based_Help
113216,about_CommonParameters
113217,about_Comparison_Operators
113218,about_Continue
113219,about_Core_Commands
113220,about_Data_Section
$A = Import-Csv -Path .\Links.csv -Header 'LinkID', 'TopicTitle'
$A | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
LinkID NoteProperty string LinkID=113207
TopicTitle NoteProperty string TopicTitle=about_Aliases
$A | Where-Object -Property TopicTitle -Like '*alias*'
LinkID TopicTitle
------ ----------
113207 about_Aliases
K vytvoření Links.csv souboru použijte hodnoty zobrazené ve výstupu Get-Content
.
Rutina Get-Content
zobrazí Links.csv soubor. Rutina Import-Csv
importuje soubor Links.csv. Parametr Header určuje názvy vlastností LinkId a TopicTitle. Objekty jsou uloženy v $A
proměnné. Rutina Get-Member
zobrazuje názvy vlastností z parametru Header . Rutina Where-Object
vybere objekty s vlastností TopicTitle , která obsahuje alias.
Příklad 6: Import souboru CSV, který nemá hodnotu
Tento příklad ukazuje, jak rutina v PowerShellu Import-Csv
reaguje, když řádek záhlaví v souboru CSV obsahuje hodnotu null nebo prázdnou hodnotu. Import-Csv
nahradí výchozí název chybějícího řádku záhlaví, který se stane názvem vlastnosti objektu, který Import-Csv
se vrátí.
Get-Content -Path .\Projects.csv
ProjectID,ProjectName,,Completed
13,Inventory,Redmond,True
440,,FarEast,True
469,Marketing,Europe,False
Import-Csv -Path .\Projects.csv
WARNING: One or more headers were not specified. Default names starting with "H" have been used in
place of any missing headers.
ProjectID ProjectName H1 Completed
--------- ----------- -- ---------
13 Inventory Redmond True
440 FarEast True
469 Marketing Europe False
(Import-Csv -Path .\Projects.csv).H1
WARNING: One or more headers were not specified. Default names starting with "H" have been used in
place of any missing headers.
Redmond
FarEast
Europe
Pokud chcete vytvořit Projects.csv soubor, použijte hodnoty uvedené ve výstupu příkladu Get-Content
.
Rutina Get-Content
zobrazí Projects.csv soubor. V řádku záhlaví chybí hodnota mezi ProjectName a Completed. Rutina Import-Csv
naimportuje soubor Projects.csv a zobrazí zprávu upozornění, protože H1 je výchozí název záhlaví. Příkaz (Import-Csv -Path .\Projects.csv).H1
získá hodnoty vlastnosti H1 a zobrazí upozornění.
Parametry
-Delimiter
Určuje oddělovač, který odděluje hodnoty vlastností v souboru CSV. Výchozí hodnota je čárka (,
).
Zadejte znak, například dvojtečku (:
). Pokud chcete zadat středník (;
), uzavřete ho do jednoduchých uvozovek. Pokud chcete zadat speciální znaky s řídicími znaky, jako je tabulátor (`t
), uzavřete ho do uvozovek.
Pokud v souboru zadáte jiný znak než skutečný oddělovač řetězců, Import-Csv
nelze vytvořit objekty z řetězců CSV a vrátit řetězce CSV.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Určuje kódování importovaného souboru CSV. Výchozí hodnota je utf8NoBOM
.
Přijatelné hodnoty pro tento parametr jsou následující:
ascii
: Používá kódování znakové sady ASCII (7bitová).ansi
: Používá kódování pro kódovou stránku ANSI aktuální jazykové verze. Tato možnost byla přidána v PowerShellu 7.4.bigendianunicode
: Kóduje ve formátu UTF-16 pomocí pořadí velkých bajtů.bigendianutf32
: Kóduje ve formátu UTF-32 pomocí pořadí velkých bajtů.oem
: Používá výchozí kódování pro MS-DOS a konzolové programy.unicode
: Kóduje ve formátu UTF-16 pomocí malého bajtového pořadí.utf7
: Kóduje ve formátu UTF-7.utf8
: Kóduje ve formátu UTF-8.utf8BOM
: Kódování ve formátu UTF-8 pomocí značky pořadí bajtů (BOM)utf8NoBOM
: Kódování ve formátu UTF-8 bez značky pořadí bajtů (BOM)utf32
: Kóduje ve formátu UTF-32.
Počínaje PowerShellem 6.2 umožňuje parametr Kódování také číselná ID registrovaných znakových stránek (jako -Encoding 1251
) nebo názvy řetězců registrovaných znakových stránek (například -Encoding "windows-1251"
). Další informace najdete v dokumentaci k .NET pro Encoding.CodePage.
Počínaje PowerShellem 7.4 můžete hodnotu parametru Encoding použít Ansi
k předání číselného ID pro znakovou stránku ANSI aktuální jazykové verze, aniž byste ji museli zadávat ručně.
Poznámka:
UTF-7* se už nedoporučuje používat. Od PowerShellu 7.1 se při zadání parametru Encoding zapíše utf7
upozornění.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Header
Určuje řádek záhlaví alternativního sloupce pro importovaný soubor. Záhlaví sloupce určuje názvy vlastností objektů vytvořených Import-Csv
.
Zadejte záhlaví sloupců jako seznam oddělený znakem. Nezavřete řetězec záhlaví do uvozovek. Uzavřete záhlaví každého sloupce do jednoduchých uvozovek.
Pokud zadáte méně záhlaví sloupců, než jsou sloupce dat, zbývající datové sloupce se zahodí. Pokud zadáte více záhlaví sloupců, než jsou datové sloupce, vytvoří se další záhlaví sloupců s prázdnými datovými sloupci.
Při použití parametru Header odstraňte původní řádek záhlaví ze souboru CSV. Import-Csv
V opačném případě vytvoří další objekt z položek v řádku záhlaví.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Určuje cestu k souboru CSV, který se má importovat. Na rozdíl od cesty 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, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby nepřekládaly žádné znaky jako řídicí sekvence.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
Určuje cestu k souboru CSV, který se má importovat.
Můžete také převést cestu k Import-Csv
.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
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: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Vstupy
Řetězec, který obsahuje cestu k této rutině, můžete převést.
Výstupy
Tato rutina vrátí objekty popsané obsahem v souboru CSV.
Poznámky
PowerShell obsahuje následující aliasy pro Import-Csv
:
- Všechny platformy:
ipcsv
Vzhledem k tomu, že importované objekty jsou verzemi CSV typu objektu, nerozpoznají se a formátují položkami formátování typu PowerShellu, které formátují jiné verze než CSV typu objektu.
Výsledkem Import-Csv
příkazu je kolekce řetězců, které tvoří objekt podobný tabulce. Každý řádek je samostatný řetězec, takže můžete pomocí vlastnosti Count objektu spočítat řádky tabulky. Sloupce jsou vlastnosti objektu a položek v řádcích jsou hodnoty vlastností.
Řádek záhlaví sloupce určuje počet sloupců a názvy sloupců. Názvy sloupců jsou také názvy vlastností objektů. První řádek se interpretuje jako záhlaví sloupců, pokud k určení záhlaví sloupců nepoužíváte parametr Header . Pokud některý řádek obsahuje více hodnot než řádek záhlaví, budou další hodnoty ignorovány.
Pokud řádek záhlaví sloupce neobsahuje hodnotu nebo obsahuje hodnotu null nebo prázdnou hodnotu, Import-Csv
použije H následované číslem pro chybějící záhlaví sloupce a název vlastnosti.
V souboru CSV je každý objekt reprezentován seznamem vlastností oddělených znakem hodnot objektu. Hodnoty vlastnosti jsou převedeny na řetězce pomocí ToString() metoda objektu, takže jsou reprezentovány názvem hodnoty vlastnosti. Export-Csv
neexportuje metody objektu.
Import-Csv
podporuje také formát rozšířeného protokolu W3C. Řádky začínající #
se považují za komentáře a ignorují se, pokud komentář nezačíná #Fields:
a neobsahuje seznam názvů sloupců s oddělovači. V takovém případě rutina používá tyto názvy sloupců. Toto je standardní formát pro službu Windows IIS a další protokoly webového serveru. Další informace naleznete v tématu Rozšířený formát souboru protokolu.