Import-Csv
Tworzy obiekty niestandardowe podobne do tabeli z elementów w pliku wartości rozdzielanej przecinkami (CSV).
Składnia
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>]
Opis
Polecenie Import-Csv
cmdlet tworzy obiekty niestandardowe przypominające tabelę na podstawie elementów w plikach CSV. Każda kolumna w pliku CSV staje się właściwością obiektu niestandardowego, a elementy w wierszach stają się wartościami właściwości. Import-Csv
program działa na dowolnym pliku CSV, w tym na plikach generowanych przez Export-Csv
polecenie cmdlet.
Możesz użyć parametrów Import-Csv
polecenia cmdlet, aby określić wiersz nagłówka kolumny i ogranicznik elementu lub bezpośrednio Import-Csv
użyć separatora listy dla bieżącej kultury jako ogranicznika elementu.
Polecenia cmdlet i ConvertFrom-Csv
umożliwiają również ConvertTo-Csv
konwertowanie obiektów na ciągi CSV (i z powrotem). Te polecenia cmdlet są takie same jak Export-CSV
polecenia cmdlet i Import-Csv
, z tą różnicą, że nie zajmują się plikami.
Jeśli wpis wiersza nagłówka w pliku CSV zawiera pustą lub null wartość, program PowerShell wstawia domyślną nazwę wiersza nagłówka i wyświetla komunikat ostrzegawczy.
Import-Csv
używa bajtu order-mark (BOM) do wykrywania formatu kodowania pliku. Jeśli plik nie ma modelu BOM, zakłada, że kodowanie ma wartość UTF8.
Przykłady
Przykład 1. Importowanie obiektów procesu
W tym przykładzie pokazano, jak wyeksportować, a następnie zaimportować plik CSV obiektów przetwarzania.
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
Polecenie Get-Process
cmdlet wysyła obiekty przetwarzania w dół potoku do elementu Export-Csv
. Polecenie Export-Csv
cmdlet konwertuje obiekty procesu na ciągi CSV i zapisuje ciągi w pliku Processes.csv. Polecenie Import-Csv
cmdlet importuje ciągi CSV z pliku Processes.csv.
Ciągi są zapisywane w zmiennej $P
. Zmienna $P
jest wysyłana w dół potoku do Get-Member
polecenia cmdlet, które wyświetla właściwości importowanych ciągów CSV. Zmienna $P
jest wysyłana w dół potoku Format-Table
do polecenia cmdlet i wyświetla obiekty.
Przykład 2. Określanie ogranicznika
W tym przykładzie pokazano, jak używać parametru Import-Csv
ogranicznika polecenia cmdlet .
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table
Polecenie Get-Process
cmdlet wysyła obiekty przetwarzania w dół potoku do elementu Export-Csv
. Polecenie Export-Csv
cmdlet konwertuje obiekty procesu na ciągi CSV i zapisuje ciągi w pliku Processes.csv.
Parametr ogranicznika służy do określania ogranicznika dwukropka. Polecenie Import-Csv
cmdlet importuje ciągi CSV z pliku Processes.csv. Ciągi są zapisywane w zmiennej $P
. Zmienna do $P
zmiennej jest wysyłana w dół potoku Format-Table
do polecenia cmdlet.
Przykład 3. Określanie bieżącej kultury ogranicznika
W tym przykładzie Import-Csv
pokazano, jak używać polecenia cmdlet z parametrem UseCulture .
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture
Import-Csv -Path .\Processes.csv -UseCulture
Polecenie Get-Culture
cmdlet używa zagnieżdżonych właściwości TextInfo i ListSeparator , aby uzyskać domyślny separator listy bieżącej kultury. Polecenie Get-Process
cmdlet wysyła obiekty przetwarzania w dół potoku do elementu Export-Csv
. Polecenie Export-Csv
cmdlet konwertuje obiekty procesu na ciągi CSV i zapisuje ciągi w pliku Processes.csv. Parametr UseCulture używa domyślnego separatora listy bieżącej kultury. Polecenie Import-Csv
cmdlet importuje ciągi CSV z pliku Processes.csv.
Przykład 4. Zmiana nazw właściwości w zaimportowanym obiekcie
W tym przykładzie pokazano, jak za pomocą parametru Import-Csv
Header zmienić nazwy właściwości w wynikowym importowanym obiekcie.
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]
Polecenie Start-Job
cmdlet uruchamia zadanie w tle z uruchomionym poleceniem Get-Process
. Obiekt zadania jest wysyłany w dół potoku Export-Csv
do polecenia cmdlet i konwertowany na ciąg CSV. Parametr NoTypeInformation usuwa nagłówek informacji o typie z danych wyjściowych CSV i jest opcjonalny w programie PowerShell Core.
Zmienna $Header
zawiera niestandardowy nagłówek, który zastępuje następujące wartości domyślne: HasMoreData, JobStateInfo, PSBeginTime, PSEndTime i PSJobTypeName. Zmienna $A
używa Get-Content
polecenia cmdlet , aby pobrać ciąg CSV z pliku Jobs.csv. Zmienna $A
jest używana do usuwania domyślnego nagłówka z pliku. Polecenie Out-File
cmdlet zapisuje nową wersję pliku Jobs.csv w zmiennej $A
. Polecenie Import-Csv
cmdlet importuje plik Jobs.csv i używa parametru Header do zastosowania zmiennej $Header
. Zmienna $J
zawiera zaimportowany obiekt PSCustomObject i wyświetla obiekt w konsoli programu PowerShell.
Przykład 5: Twórca obiektu niestandardowego przy użyciu pliku CSV
W tym przykładzie pokazano, jak utworzyć obiekt niestandardowy w programie PowerShell przy użyciu pliku 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
Aby utworzyć plik Links.csv, użyj wartości wyświetlanych w danych wyjściowych Get-Content
.
Polecenie Get-Content
cmdlet wyświetla plik Links.csv. Polecenie Import-Csv
cmdlet importuje plik Links.csv. Parametr Header określa nazwy właściwości LinkId i TopicTitle. Obiekty są przechowywane w zmiennej $A
. Polecenie Get-Member
cmdlet wyświetla nazwy właściwości z parametru Header . Polecenie Where-Object
cmdlet wybiera obiekty z właściwością TopicTitle , która zawiera alias.
Przykład 6. Importowanie pliku CSV, który nie ma wartości
W tym przykładzie pokazano, jak Import-Csv
polecenie cmdlet w programie PowerShell reaguje, gdy wiersz nagłówka w pliku CSV zawiera wartość null lub wartość pustą. Import-Csv
Zastępuje domyślną nazwę brakującego wiersza nagłówka, który staje się nazwą właściwości zwracanego obiektu Import-Csv
.
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
Aby utworzyć plik Projects.csv, użyj wartości pokazanych w danych wyjściowych przykładu Get-Content
.
Polecenie Get-Content
cmdlet wyświetla plik Projects.csv. W wierszu nagłówka brakuje wartości między wartościami ProjectName i Completed. Polecenie Import-Csv
cmdlet importuje plik Projects.csv i wyświetla komunikat ostrzegawczy, ponieważ H1 jest domyślną nazwą nagłówka. Polecenie (Import-Csv -Path .\Projects.csv).H1
pobiera wartości właściwości H1 i wyświetla ostrzeżenie.
Parametry
-Delimiter
Określa ogranicznik oddzielający wartości właściwości w pliku CSV. Wartość domyślna to przecinek (,).
Wprowadź znak, taki jak dwukropek (:). Aby określić średnik (;) ująć go w pojedynczy cudzysłów.
Jeśli określisz znak inny niż rzeczywisty ogranicznik ciągu w pliku, Import-Csv
nie można utworzyć obiektów z ciągów CSV i zwróci ciągi CSV.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Określa typ kodowania dla pliku docelowego. Wartość domyślna to Domyślna.
Dopuszczalne wartości tego parametru są następujące:
- ASCII Używa zestawu znaków ASCII (7-bitowego).
- Bigendianunicode Używa formatu UTF-16 z kolejnością bajtów big-endian.
- Domyślny Używa kodowania odpowiadającego aktywnej stronie kodowej systemu (zwykle ANSI).
- OEM Używa kodowania odpowiadającego bieżącej stronie kodowej producenta OEM systemu.
- Unicode Używa formatu UTF-16 z kolejnością bajtów little-endian.
- UTF7 Używa formatu UTF-7.
- UTF8 Używa formatu UTF-8.
- UTF32 Używa utF-32 z kolejnością bajtów 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
Określa alternatywny wiersz nagłówka kolumny dla zaimportowanego pliku. Nagłówek kolumny określa nazwy właściwości obiektów utworzonych przez Import-Csv
element .
Wprowadź nagłówki kolumn jako listę rozdzielaną przecinkami. Nie należy ująć ciągu nagłówka w cudzysłów. Ujęć każdy nagłówek kolumny w pojedynczy cudzysłów.
Jeśli wprowadzisz mniej nagłówków kolumn niż istnieją kolumny danych, pozostałe kolumny danych zostaną odrzucone. Jeśli wprowadzisz więcej nagłówków kolumn niż istnieją kolumny danych, dodatkowe nagłówki kolumn zostaną utworzone z pustymi kolumnami danych.
W przypadku korzystania z parametru Nagłówek usuń oryginalny wiersz nagłówka z pliku CSV. Import-Csv
W przeciwnym razie tworzy dodatkowy obiekt z elementów w wierszu nagłówka.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Określa ścieżkę do pliku CSV do zaimportowania. W przeciwieństwie do ścieżki wartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy je ująć w pojedynczy cudzysłów. Znaki pojedynczego cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
Określa ścieżkę do pliku CSV do zaimportowania.
Możesz również przekazać ścieżkę do Import-Csv
elementu .
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-UseCulture
Używa separatora listy dla bieżącej kultury jako ogranicznika elementu. Aby znaleźć separator listy dla kultury, użyj następującego polecenia: (Get-Culture).TextInfo.ListSeparator
.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Dane wejściowe
Możesz potokować ciąg zawierający ścieżkę do Import-Csv
.
Dane wyjściowe
Object
To polecenie cmdlet zwraca obiekty opisane przez zawartość w pliku CSV.
Uwagi
Ponieważ importowane obiekty są wersjami csv typu obiektu, nie są rozpoznawane i formatowane przez wpisy formatowania typu programu PowerShell, które formatują wersje obiektu inne niż CSV.
Wynikiem Import-Csv
polecenia jest kolekcja ciągów, które tworzą obiekt niestandardowy przypominający tabelę. Każdy wiersz jest osobnym ciągiem, więc możesz użyć właściwości Count obiektu, aby zliczyć wiersze tabeli. Kolumny są właściwościami obiektu, a elementy w wierszach są wartościami właściwości.
Wiersz nagłówka kolumny określa liczbę kolumn i nazwy kolumn. Nazwy kolumn są również nazwami właściwości obiektów. Pierwszy wiersz jest interpretowany jako nagłówki kolumn, chyba że do określenia nagłówków kolumn jest używany parametr Nagłówek . Jeśli jakikolwiek wiersz zawiera więcej wartości niż wiersz nagłówka, dodatkowe wartości są ignorowane.
Jeśli w wierszu nagłówka kolumny brakuje wartości lub zawiera wartość null lub pustą, Import-Csv
użyje wartości H , a następnie liczby dla brakującego nagłówka kolumny i nazwy właściwości.
W pliku CSV każdy obiekt jest reprezentowany przez rozdzielaną przecinkami listę wartości właściwości obiektu. Wartości właściwości są konwertowane na ciągi przy użyciu metody ToString() obiektu, więc są reprezentowane przez nazwę wartości właściwości. Export-Csv
program nie eksportuje metod obiektu .