Import-Csv
Vytvoří uživatelské objekty podobné tabulce z položek v souboru s hodnotami oddělenými čárkami (CSV).
Syntax
Delimiter (Výchozí)
Import-Csv
[[-Path] <string[]>]
[[-Delimiter] <char>]
[-LiteralPath <string[]>]
[-Header <string[]>]
[-Encoding <string>]
[<CommonParameters>]
UseCulture
Import-Csv
[[-Path] <string[]>]
-UseCulture
[-LiteralPath <string[]>]
[-Header <string[]>]
[-Encoding <string>]
[<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ů rutiny Import-Csv můžete zadat řádek záhlaví sloupce a oddělovač položek, nebo můžete přesměrovat Import-Csv, aby použil oddělovač seznamu podle aktuální jazykové verze jako oddělovač položek.
Pomocí rutin ConvertTo-Csv a ConvertFrom-Csv můžete také převést objekty na řetězce CSV (a zpět). Tyto rutiny jsou stejné jako rutiny a Export-CSV s tím rozdílemImport-Csv, že se nezabývají 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.
Import-Csv pomocí značky bajtů (BOM) rozpozná formát kódování souboru. Pokud soubor neobsahuje boM, předpokládá se, že kódování je UTF8.
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 do 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 proměnné $P. Proměnná $P se odešle do pipeline k cmdletu Get-Member, který zobrazuje vlastnosti importovaných řetězců CSV. Proměnná $P se odešle dolů potrubím do rutiny Format-Table, která poté zobrazí objekty.
Příklad 2: Určení oddělovače
Tento příklad ukazuje, jak použít parametr Oddělovač příkazového prostředku Import-Csv.
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table
Rutina cmdlet Get-Process odesílá objekty procesu prostřednictvím kanálu do 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í dvojtečkového oddělovače. Rutina Import-Csv importuje řetězce CSV ze souboru Processes.csv. Řetězce jsou uloženy v proměnné $P. Proměnná $P je odeslána dolů potrubím 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
Cmdlet Get-Culture používá vnořené vlastnosti TextInfo a ListSeparator k získání výchozího oddělovače seznamu podle aktuálního nastavení kultury. Rutina cmdlet Get-Process odesílá objekty procesu prostřednictvím kanálu do 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í kultury. 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 HeaderImport-Csv 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]
Cmdlet Start-Job spustí úlohu na pozadí, která běží Get-Process. Objekt úlohy je odeslán do potrubí ke cmdletu Export-Csv a převeden na CSV řetězec. Parametr NoTypeInformation odebere hlavičku informací o typu z výstupu CSV a je volitelný v PowerShell Core.
Proměnná $Header obsahuje vlastní hlavičku, která nahrazuje následující výchozí hodnoty: HasMoreData, JobStateInfo, PSBeginTime, PSEndTimea 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 proměnné $A. Rutina Import-Csv naimportuje soubor Jobs.csv a použije parametr Header k použití proměnné $Header. Proměnná $J obsahuje importovaný 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.
Cmdlet Get-Content zobrazí soubor Links.csv. Rutina Import-Csv importuje soubor Links.csv. Parametr hlavičky $A. Rutina
Příklad 6: Import souboru CSV, ve kterém chybí hodnota
Tento příklad ukazuje, jak Import-Csv rutina v PowerShellu 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 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
Chcete-li vytvořit soubor Projects.csv, použijte hodnoty uvedené ve výstupu příkladu Get-Content .
Rutina Get-Content zobrazí soubor Projects.csv. V řádku záhlaví chybí hodnota mezi ProjectName a Dokončeno. Rutina Import-Csv importuje soubor Projects.csv a zobrazí zprávu s upozorněním, protože H1 je výchozí název hlavičky. 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 (:). Chcete-li určit středník (;) ho uzavřete do jednoduchých uvozovek.
Pokud v souboru Import-Csv určíte jiný znak, než je skutečný oddělovač řetězců, nelze vytvořit objekty z řetězců CSV a vrátí řetězce CSV.
Vlastnosti parametru
| Typ: | Char |
| Default value: | comma (,) |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
Delimiter
| Position: | 1 |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Encoding
Určuje typ kódování cílového souboru. Výchozí hodnota je Default.
Přijatelné hodnoty pro tento parametr jsou následující:
- ASCII používá znakovou sadu ASCII (7bitová).
- BigEndianUnicode používá UTF-16 s pořadím velkých bajtů.
- Výchozí Používá kódování odpovídající aktivní znakové stránce systému (obvykle ANSI).
- OEM Používá kódování odpovídající aktuální znakové stránce OEM systému.
- Unicode používá UTF-16 s minimálním pořadím bajtů.
- UTF7 používá UTF-7.
- UTF8 používá UTF-8.
- UTF32 používá UTF-32 s malým pořadím bajtů.
Vlastnosti parametru
| Typ: | Encoding |
| Default value: | Default |
| Přípustné hodnoty: | ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32 |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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.
Záhlaví sloupců zadávejte jako seznam oddělený čárkami. Neuzavírejte ř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. V opačném případě Import-Csv vytvoří další objekt z položek v řádku záhlaví.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-LiteralPath
Určuje cestu k souboru CSV, který se má importovat. Na rozdíl od Pathse hodnota parametru LiteralPath používá přesně tak, jak je zadán. Žádný znak není interpretován jako zástupný znak. Pokud cesta obsahuje únikové znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby žádné znaky neinterpretoval jako únikové sekvence.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | PSPath |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-Path
Určuje cestu k souboru CSV, který se má importovat.
Můžete také přesměrovat cestu k Import-Csv.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | 0 |
| Povinné: | False |
| Hodnota z kanálu: | True |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-UseCulture
Použije oddělovač seznamu pro aktuální kulturu jako oddělovač položek. K vyhledání oddělovače seznamu pro kulturu použijte následující příkaz: (Get-Culture).TextInfo.ListSeparator.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
UseCulture
| Position: | Named |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
CommonParameters
Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.
Vstupy
String
Řetězec, který obsahuje cestu k Import-Csv, můžete pipetovat .
Výstupy
Object
Tato rutina vrátí objekty popsané obsahem v souboru CSV.
Poznámky
Vzhledem k tomu, že importované objekty jsou verze CSV typu objektu, nejsou rozpoznány a formátovány položkami formátování typu PowerShell, které formátují verze typu objektu, které nejsou ve formátu CSV.
Výsledkem příkazu Import-Csv je kolekce řetězců, které tvoří vlastní objekt podobný tabulce. Každý řádek je samostatný řetězec, takže k počítání řádků tabulky můžete použít vlastnost Count objektu. 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 záhlaví chybějícího sloupce a název vlastnosti.
V souboru CSV je každý objekt reprezentován čárkami odděleným seznamem hodnot vlastností objektu. Hodnoty vlastností jsou převedeny na řetězce pomocí metody ToString() objektu, takže jsou reprezentovány názvem hodnoty vlastnosti.
Export-Csv neexportuje metody objektu.