Import-Csv
Skapar tabellliknande anpassade objekt från objekten i en fil med kommaavgränsade värden (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
Cmdleten Import-Csv
skapar tabellliknande anpassade objekt från objekten i CSV-filer. Varje kolumn i CSV-filen blir en egenskap för det anpassade objektet och objekten i raderna blir egenskapsvärdena. Import-Csv
fungerar på alla CSV-filer, inklusive filer som genereras av cmdleten Export-Csv
.
Du kan använda parametrarna för cmdleten Import-Csv
för att ange kolumnrubrikraden och objektavgränsaren, eller direkt Import-Csv
till att använda listavgränsaren för den aktuella kulturen som objektavgränsare.
Du kan också använda ConvertTo-Csv
cmdletarna och ConvertFrom-Csv
för att konvertera objekt till CSV-strängar (och bakåt). Dessa cmdletar är samma som Export-CSV
cmdletarna och Import-Csv
förutom att de inte hanterar filer.
Om en rubrikradspost i en CSV-fil innehåller ett tomt eller null-värde infogar PowerShell ett standardnamn för rubrikraden och visar ett varningsmeddelande.
Från och med PowerShell 6.0 stöder Import-Csv
nu det utökade loggfilsformatet W3C.
Exempel
Exempel 1: Importera processobjekt
Det här exemplet visar hur du exporterar och sedan importerar en CSV-fil med processobjekt.
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
Cmdleten Get-Process
skickar processobjekt nedåt i pipelinen Export-Csv
till . Cmdleten Export-Csv
konverterar processobjekten till CSV-strängar och sparar strängarna i Processes.csv-filen. Cmdleten Import-Csv
importerar CSV-strängarna från filen Processes.csv.
Strängarna sparas i variabeln $P
. Variabeln $P
skickas nedåt i pipelinen till cmdleten Get-Member
som visar egenskaperna för de importerade CSV-strängarna. Variabeln $P
skickas nedåt i pipelinen till cmdleten Format-Table
och visar objekten.
Exempel 2: Ange avgränsare
Det här exemplet visar hur du använder parametern Avgränsare för cmdleten Import-Csv
.
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table
Cmdleten Get-Process
skickar processobjekt längs pipelinen till Export-Csv
. Cmdleten Export-Csv
konverterar processobjekten till CSV-strängar och sparar strängarna i Processes.csv-filen.
Parametern Avgränsare används för att ange en kolongränsare. Cmdleten Import-Csv
importerar CSV-strängarna från filen Processes.csv. Strängarna sparas i variabeln $P
. Variabeln $P
skickas nedåt i pipelinen till cmdleten Format-Table
.
Exempel 3: Ange den aktuella kulturen för avgränsare
Det här exemplet visar hur du använder cmdleten Import-Csv
med parametern UseCulture .
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture
Import-Csv -Path .\Processes.csv -UseCulture
Cmdleten Get-Culture
använder de kapslade egenskaperna TextInfo och ListSeparator för att hämta den aktuella kulturens standardlistavgränsare. Cmdleten Get-Process
skickar processobjekt längs pipelinen till Export-Csv
. Cmdleten Export-Csv
konverterar processobjekten till CSV-strängar och sparar strängarna i Processes.csv-filen. Parametern UseCulture använder den aktuella kulturens standardlistavgränsare. Cmdleten Import-Csv
importerar CSV-strängarna från filen Processes.csv.
Exempel 4: Ändra egenskapsnamn i ett importerat objekt
Det här exemplet visar hur du använder parametern Import-Csv
Header för för att ändra namnen på egenskaperna i det resulterande importerade objektet.
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]
Cmdleten Start-Job
startar ett bakgrundsjobb som kör Get-Process
. Ett jobbobjekt skickas nedåt i pipelinen till cmdleten Export-Csv
och konverteras till en CSV-sträng. Parametern NoTypeInformation tar bort typinformationshuvudet från CSV-utdata och är valfri i PowerShell v6 och senare. Variabeln $Header
innehåller ett anpassat sidhuvud som ersätter följande standardvärden: HasMoreData, JobStateInfo, PSBeginTime, PSEndTime och PSJobTypeName. Variabeln $A
använder cmdleten Get-Content
för att hämta CSV-strängen från Jobs.csv-filen. Variabeln $A
används för att ta bort standardrubriken från filen. Cmdleten Out-File
sparar den nya versionen av Jobs.csv-filen i variabeln $A
. Cmdleten Import-Csv
importerar Jobs.csv-filen och använder parametern Header för att tillämpa variabeln $Header
. Variabeln $J
innehåller det importerade PSCustomObject och visar objektet i PowerShell-konsolen.
Exempel 5: Skapa ett anpassat objekt med hjälp av en CSV-fil
Det här exemplet visar hur du skapar ett anpassat objekt i PowerShell med hjälp av en CSV-fil.
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
Om du vill skapa Links.csv-filen använder du de värden som visas i Get-Content
utdata.
Cmdleten Get-Content
visar filen Links.csv. Cmdleten Import-Csv
importerar Links.csv-filen. Parametern Header anger egenskapsnamnen LinkId och TopicTitle. Objekten lagras i variabeln $A
. Cmdleten Get-Member
visar egenskapsnamnen från parametern Header . Cmdleten Where-Object
väljer objekt med egenskapen TopicTitle som innehåller alias.
Exempel 6: Importera en CSV som saknar ett värde
Det här exemplet visar hur cmdleten Import-Csv
i PowerShell svarar när rubrikraden i en CSV-fil innehåller ett null- eller tomt värde. Import-Csv
ersätter ett standardnamn för den saknade rubrikraden som blir egenskapsnamnet för objektet som Import-Csv
returneras.
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
Om du vill skapa Projects.csv-filen använder du de värden som visas i exemplets Get-Content
utdata.
Cmdleten Get-Content
visar filen Projects.csv. Rubrikraden saknar ett värde mellan ProjectName och Completed. Cmdleten Import-Csv
importerar Projects.csv-filen och visar ett varningsmeddelande eftersom H1 är ett standardhuvudnamn. Kommandot (Import-Csv -Path .\Projects.csv).H1
hämtar H1-egenskapsvärdena och visar en varning.
Parametrar
-Delimiter
Anger avgränsare som avgränsar egenskapsvärdena i CSV-filen. Standardvärdet är ett kommatecken (,
).
Ange ett tecken, till exempel ett kolon (:
). Om du vill ange ett semikolon (;
) omger du det inom enkla citattecken. Om du vill ange undantagna specialtecken, till exempel tabbtecken (`t
), omger du det med dubbla citattecken.
Om du anger ett annat tecken än den faktiska stränggränsaren i filen kan Import-Csv
du inte skapa objekten från CSV-strängarna och returnerar CSV-strängarna.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Anger kodningen för den importerade CSV-filen. Standardvärdet är utf8NoBOM
.
Godkända värden för den här parametern är följande:
ascii
: Använder kodningen för ASCII-teckenuppsättningen (7-bitars).bigendianunicode
: Kodar i UTF-16-format med hjälp av den stora byteordningen.bigendianutf32
: Kodar i UTF-32-format med hjälp av den stora byteordningen.oem
: Använder standardkodning för MS-DOS och konsolprogram.unicode
: Kodar i UTF-16-format med den little-endianska byteordningen.utf7
: Kodar i UTF-7-format.utf8
: Kodar i UTF-8-format.utf8BOM
: Kodar i UTF-8-format med BOM (Byte Order Mark)utf8NoBOM
: Kodar i UTF-8-format utan bom (Byte Order Mark)utf32
: Kodar i UTF-32-format.
Från och med PowerShell 6.2 tillåter kodningsparametern även numeriska ID:er för registrerade kodsidor (till exempel -Encoding 1251
) eller strängnamn för registrerade kodsidor (till exempel -Encoding "windows-1251"
). Mer information finns i .NET-dokumentationen för Encoding.CodePage.
Anteckning
UTF-7* rekommenderas inte längre att använda. Från och med PowerShell 7.1 skrivs en varning om du anger utf7
för kodningsparametern .
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
Anger en alternativ kolumnrubrikrad för den importerade filen. Kolumnrubriken avgör egenskapsnamnen för de objekt som skapats av Import-Csv
.
Ange kolumnrubriker som en kommaavgränsad lista. Omge inte huvudsträngen inom citattecken. Omger varje kolumnrubrik inom enkla citattecken.
Om du anger färre kolumnrubriker än det finns datakolumner ignoreras de återstående datakolumnerna. Om du anger fler kolumnrubriker än det finns datakolumner skapas de ytterligare kolumnrubrikerna med tomma datakolumner.
När du använder parametern Rubrik tar du bort den ursprungliga rubrikraden från CSV-filen. Annars Import-Csv
skapas ett extra objekt från objekten i rubrikraden.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Anger sökvägen till CSV-filen som ska importeras. Till skillnad från Path används värdet för parametern LiteralPath exakt som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken talar om för PowerShell att inga tecken ska tolkas som escape-sekvenser.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
Anger sökvägen till CSV-filen som ska importeras.
Du kan också skicka en sökväg till Import-Csv
.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-UseCulture
Använder listavgränsaren för den aktuella kulturen som objektavgränsare. Använd följande kommando för att hitta listavgränsaren för en kultur: (Get-Culture).TextInfo.ListSeparator
.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indata
Du kan skicka en sträng som innehåller en sökväg till Import-Csv
.
Utdata
Object
Den här cmdleten returnerar de objekt som beskrivs av innehållet i CSV-filen.
Kommentarer
Eftersom de importerade objekten är CSV-versioner av objekttypen känns de inte igen och formateras med formateringsposter av PowerShell-typ som formaterar objekttypens icke-CSV-versioner.
Resultatet av ett Import-Csv
kommando är en samling strängar som utgör ett tabellliknande anpassat objekt. Varje rad är en separat sträng, så du kan använda egenskapen Antal för objektet för att räkna tabellraderna. Kolumnerna är egenskaperna för objektet och objekten på raderna är egenskapsvärdena.
Kolumnrubrikraden avgör antalet kolumner och kolumnnamnen. Kolumnnamnen är också namnen på objektens egenskaper. Den första raden tolkas som kolumnrubriker, såvida du inte använder parametern Rubrik för att ange kolumnrubriker. Om någon rad har fler värden än rubrikraden ignoreras de ytterligare värdena.
Om kolumnrubrikraden saknar ett värde eller innehåller ett nullvärde eller ett tomt värde, Import-Csv
använder H följt av ett tal för det saknade kolumnrubriken och egenskapsnamnet.
I CSV-filen representeras varje objekt av en kommaavgränsad lista över objektets egenskapsvärden. Egenskapsvärdena konverteras till strängar med hjälp av metoden ToString() för objektet, så de representeras av namnet på egenskapsvärdet. Export-Csv
exporterar inte -metoderna för objektet.
Import-Csv
stöder också W3C Extended Log-formatet. Rader som börjar med #
behandlas som kommentarer och ignoreras om inte kommentaren börjar med #Fields:
och innehåller en avgränsad lista med kolumnnamn. I så fall använder cmdleten dessa kolumnnamn. Det här är standardformatet för Windows IIS och andra webbserverloggar. Mer information finns i Utökat loggfilsformat.