Sdílet prostřednictvím


Import-Csv

Vytvoří vlastní objekty podobné tabulce z položek v souboru hodnot oddělených čárkami (CSV).

Syntax

Import-Csv
      [[-Path] <string[]>]
      [[-Delimiter] <char>]
      [-LiteralPath <string[]>]
      [-Header <string[]>]
      [-Encoding <string>]
      [<CommonParameters>]
Import-Csv
      [[-Path] <string[]>]
      -UseCulture
      [-LiteralPath <string[]>]
      [-Header <string[]>]
      [-Encoding <string>]
      [<CommonParameters>]

Description

Rutina Import-Csv vytvoří z položek v souborech CSV vlastní objekty podobné tabulce. 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 s libovolným souborem CSV, včetně souborů vygenerovaných rutinou Export-Csv .

Parametry rutiny Import-Csv můžete použít k určení řádku záhlaví sloupce a oddělovače položek nebo přímo Import-Csv použít oddělovač seznamu pro aktuální jazykovou verzi jako oddělovač položek.

Rutiny a ConvertFrom-Csv můžete také použít ConvertTo-Csv k převodu objektů na řetězce sdíleného svazku clusteru (a zpět). Tyto rutiny jsou stejné jako Export-CSV rutiny a Import-Csv s tím rozdílem, že se soubory nezabývá.

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 používá znak pořadí bajtů (BOM) ke zjištění formátu kódování souboru. Pokud soubor neobsahuje žádný kusovník, 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 v kanálu do objektu 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 kanálu do rutiny Get-Member , která zobrazuje vlastnosti importovaných řetězců sdíleného svazku clusteru. Proměnná $P se odešle do kanálu do rutiny Format-Table 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 v 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č se používá 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 v 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í 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-CsvHeader 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á spustí Get-Process. Objekt úlohy se odešle do kanálu do rutiny Export-Csv a převede se na řetězec CSV. Parametr NoTypeInformation odebere hlavičku s informacemi o typu z výstupu sdíleného svazku clusteru a je v PowerShellu Core volitelný. Proměnná $Header obsahuje vlastní hlavičku, která nahrazuje následující výchozí hodnoty: HasMoreData, JobStateInfo, PSBeginTime, PSEndTime a PSJobTypeName. Proměnná $A pomocí rutiny Get-Content získá řetězec CSV ze souboru Jobs.csv. Proměnná $A se používá 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 importuje soubor Jobs.csv a použije k použití $Header proměnné parametr Header. Proměnná $J obsahuje importovaný objekt PSCustomObject a zobrazí objekt v konzole PowerShellu.

Příklad 5: Create 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

Pokud chcete vytvořit soubor Links.csv, použijte hodnoty uvedené ve výstupu Get-Content .

Rutina Get-Content zobrazí soubor Links.csv. 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 zobrazí názvy vlastností z parametru Header . Rutina Where-Object vybere objekty s vlastností TopicTitle , která zahrnuje alias.

Příklad 6: Import sdíleného svazku clusteru, ve které chybí hodnota

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 vrací.

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 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 Completed. 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 (:). Pokud chcete zadat středník (;) uzavřete ho do jednoduchých 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átí řetězce CSV.

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 Výchozí.

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 bajtů big-endian.
  • Výchozí Používá 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:Encoding
Accepted values:ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32
Position:Named
Default value:Default
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 nástrojem Import-Csv.

Zadejte záhlaví sloupců jako seznam oddělený čárkami. Neuzavírejte řetězec záhlaví do uvozovek. Každé záhlaví sloupce uzavřete do jednoduchých uvozovek.

Pokud zadáte méně záhlaví sloupců, než kolik je datových sloupců, zbývající sloupce dat se zahodí. Pokud zadáte více záhlaví sloupců, než kolik je sloupců dat, vytvoří se další záhlaví sloupců s prázdnými sloupci dat.

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ří z položek v řádku záhlaví objekt navíc.

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 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, uzavřete ji do jednoduchých uvozovek. 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:True
Accept wildcard characters:False

-Path

Určuje cestu k souboru CSV, který se má importovat. Můžete také vytvořit kanál cesty k Import-Csv.

Type:String[]
Position:0
Default value:None
Required:False
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

String

Můžete připojit řetězec, který obsahuje cestu k Import-Csv.

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 PowerShellu, které formátují jiné verze než CSV typu objektu.

Výsledkem Import-Csv příkazu 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žky 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žijete parametr Header . Pokud některý řádek obsahuje více hodnot než řádek záhlaví, budou další hodnoty ignorovány.

Pokud v řádku záhlaví sloupce chybí hodnota nebo obsahuje hodnotu null nebo prázdnou hodnotu, Import-Csv použije pro záhlaví chybějícího sloupce a název vlastnosti hodnotu H následovanou číslem.

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í ToString() metody objektu, takže jsou reprezentovány názvem hodnoty vlastnosti. Export-Csv neexportuje metody objektu.