Import-Csv
Skapar tabellliknande anpassade objekt från objekten i en CSV-fil (character-separated value).
Syntax
		DelimiterPath (Standard)
	 
	Import-Csv
    [[-Delimiter] <Char>]
    [-Path] <String[]>
    [-Header <String[]>]
    [-Encoding <Encoding>]
    [<CommonParameters>]
		DelimiterLiteralPath
	  
	Import-Csv
    [[-Delimiter] <Char>]
    -LiteralPath <String[]>
    [-Header <String[]>]
    [-Encoding <Encoding>]
    [<CommonParameters>]
		CulturePath
	 
	Import-Csv
    [-Path] <String[]>
    -UseCulture
    [-Header <String[]>]
    [-Encoding <Encoding>]
    [<CommonParameters>]
		CultureLiteralPath
	  
	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 för att använda listavgränsaren för den aktuella kulturen som objektavgränsare.
Du kan också använda cmdletarna ConvertTo-Csv och ConvertFrom-Csv för att konvertera objekt till CSV-strängar (och bakåt). Dessa cmdletar är samma som cmdletarna Export-Csv och Import-Csv, förutom att de fungerar med data från pipelinen i stället för från filer.
Om en rubrikradspost i en CSV-fil innehåller ett tomt eller null-värde infogar PowerShell ett standardrubrikradnamn och visar ett varningsmeddelande.
Från och med PowerShell 6.0 stöder Import-Csv nu W3C Extended Log File Format.
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 i pipelinen till Export-Csv. 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 i pipelinen till den Get-Member cmdlet som visar egenskaperna för de importerade CSV-strängarna. Variabeln $P skickas ned 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 ned i 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. För att $P variabel skickas ned pipelinen till Format-Table cmdlet.
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 kapslade egenskaper TextInfo och ListSeparator för att hämta den aktuella kulturens standardlistavgränsare. Cmdleten Get-Process skickar processobjekt ned i 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 Rubrik för Import-Csv för att ändra namnen på egenskaperna i det 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 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 huvud som ersätter följande standardvärden: HasMoreData, JobStateInfo, PSBeginTime, PSEndTimeoch 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 den importerade PSCustomObject- och visar objektet i PowerShell-konsolen.
Exempel 5: Skapa ett anpassat objekt med 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 Links.csv-filen. 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 det objekt som Import-Csv returnerar.
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 weren't 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
Cmdleten Get-Content visar Projects.csv-filen. Rubrikraden saknar ett värde mellan ProjectName och Slutförd. Cmdleten Import-Csv importerar Projects.csv-filen och visar ett varningsmeddelande eftersom H1- är ett standardhuvudnamn.
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 (;) omges det av enkla citattecken. Om du vill ange undantagna specialtecken, till exempel tab (`t), omger du det med dubbla citattecken.
Om du anger ett annat tecken än den faktiska stränggränsaren i filen kan Import-Csv inte skapa objekten från CSV-strängarna och returnerar de fullständiga CSV-strängarna.
Parameteregenskaper
| Typ: | Char | 
| Standardvärde: | comma (,) | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
					DelimiterPath 
					
				 
				| Position: | 1 | 
| Obligatorisk: | False | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
					DelimiterLiteralPath 
					
				  
				| Position: | 1 | 
| Obligatorisk: | False | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | 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).
- 
              ansi: Använder kodningen för den aktuella kulturens ANSI-kodsida. Det här alternativet lades till i PowerShell 7.4.
- 
              bigendianunicode: Kodar i UTF-16-format med hjälp av storstavelseordningen.
- 
              bigendianutf32: Kodar i UTF-32-format med big-endian-byteordning.
- 
              oem: Använder standardkodning för MS-DOS- och konsolprogram.
- 
              unicode: Kodar i UTF-16-format med hjälp av lite endiansk byteordning.
- 
              utf7: Kodar i UTF-7-format.
- 
              utf8: Kodar i UTF-8-format.
- 
              utf8BOM: Kodar i UTF-8-format med Byte Order Mark (BOM)
- 
              utf8NoBOM: Kodar i UTF-8-format utan Byte Order Mark (BOM)
- 
              utf32: Kodar i UTF-32-format.
Från och med PowerShell 6.2 tillåter parametern Kodning även numeriska ID:n 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.
Från och med PowerShell 7.4 kan du använda värdet Ansi för parametern Kodning för att skicka det numeriska ID:t för den aktuella kulturens ANSI-kodsida utan att behöva ange det manuellt.
Anmärkning
              UTF-7* rekommenderas inte längre att användas. Från och med PowerShell 7.1 skrivs en varning om du anger utf7 för parametern Kodning.
Parameteregenskaper
| Typ: | Encoding | 
| Standardvärde: | UTF8NoBOM | 
| Godkända värden: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
(All)
| Position: | Named | 
| Obligatorisk: | False | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | 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 teckenavgränsad lista. Omslut inte rubriksträngen inom citattecken. Omslut 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 Header tar du bort den ursprungliga rubrikraden från CSV-filen. Annars skapar Import-Csv ett extra objekt från objekten i rubrikraden.
Parameteregenskaper
| Typ: | String[] | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
(All)
| Position: | Named | 
| Obligatorisk: | False | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
-LiteralPath 
		Anger sökvägen till CSV-filen som ska importeras. Till skillnad från Pathanvänds värdet för parametern LiteralPath exakt som den skrivs. Inga tecken tolkas som wildcards. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken gör att PowerShell inte tolkar några tecken som escape-sekvenser.
Parameteregenskaper
| Typ: | String[] | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
| Alias: | PSPath, SP | 
Parameteruppsättningar
					DelimiterLiteralPath 
					
				  
				| Position: | Named | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | True | 
| Värde från återstående argument: | False | 
					CultureLiteralPath 
					
				  
				| Position: | Named | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | True | 
| Värde från återstående argument: | False | 
-Path
Anger sökvägen till CSV-filen som ska importeras.
Du kan också skicka en sökväg till Import-Csv.
Parameteregenskaper
| Typ: | String[] | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
					DelimiterPath 
					
				 
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | True | 
| Värde från pipeline efter egenskapsnamn: | True | 
| Värde från återstående argument: | False | 
					CulturePath 
					
				 
				| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | True | 
| Värde från pipeline efter egenskapsnamn: | True | 
| Värde från återstående argument: | False | 
-UseCulture 
		Använder listavgränsaren för den aktuella kulturen som objektavgränsare. Om du vill hitta listavgränsaren för en kultur använder du följande kommando: (Get-Culture).TextInfo.ListSeparator.
Parameteregenskaper
| Typ: | SwitchParameter | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
					CulturePath 
					
				 
				| Position: | Named | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
					CultureLiteralPath 
					
				  
				| Position: | Named | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
CommonParameters
Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.
Indata
String
Du kan skicka en sträng som innehåller en sökväg till den här cmdleten.
Utdata
Object
Den här cmdleten returnerar de objekt som beskrivs av innehållet i CSV-filen.
Kommentarer
PowerShell innehåller följande alias för Import-Csv:
- Alla plattformar: - ipcsv
 
Eftersom de importerade objekten är CSV-versioner av objekttypen känns de inte igen och formateras av de PowerShell-typformateringsposter 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 Count för objektet för att räkna tabellraderna. Kolumnerna är egenskaperna för objektet och objekten i 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 Header 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 null- eller tomt värde använder Import-CsvH- följt av ett tal för kolumnrubriken och egenskapsnamnet som saknas.
I CSV-filen representeras varje objekt av en teckenavgränsad lista över objektets egenskapsvärden. Egenskapsvärdena konverteras till strängar med hjälp av ToString() -metoden för objektet, så att de representeras av namnet på egenskapsvärdet. 
              Export-Csv exporterar inte objektmetoderna.
              Import-Csv stöder även W3C Extended Log-formatet. Rader som börjar med hash-tecknet (#) behandlas som kommentarer och ignoreras om inte kommentaren börjar med #Fields: och innehåller 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 loggfilformat.