Import-Csv
Tworzy obiekty niestandardowe przypominające tabelę na podstawie elementów w pliku wartości rozdzielanej znakami (CSV).
Składnia
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>]
Opis
Polecenie cmdlet Import-Csv
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
działa na dowolnym pliku CSV, w tym na plikach generowanych przez polecenie cmdlet Export-Csv
.
Możesz użyć parametrów polecenia cmdlet Import-Csv
, aby określić wiersz nagłówka kolumny i ogranicznik elementu lub polecić Import-Csv
użycie separatora listy dla bieżącej kultury jako ogranicznika elementu.
Możesz również użyć poleceń cmdlet ConvertTo-Csv
i ConvertFrom-Csv
, aby przekonwertować obiekty na ciągi CSV (i z powrotem). Te polecenia cmdlet są takie same jak polecenia cmdlet Export-CSV
i Import-Csv
, z wyjątkiem tego, że działają z danymi przepływającymi w potoku zamiast z plików.
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.
Począwszy od programu PowerShell 6.0, Import-Csv
obsługuje teraz rozszerzony format pliku dziennika W3C.
Przykłady
Przykład 1. Importowanie obiektów procesu
W tym przykładzie pokazano, jak wyeksportować, a następnie zaimportować plik CSV obiektów procesu.
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 cmdlet Get-Process
wysyła obiekty procesów wzdłuż potoku do Export-Csv
. Polecenie cmdlet Export-Csv
konwertuje obiekty procesu na ciągi CSV i zapisuje ciągi w pliku Processes.csv. Polecenie cmdlet Import-Csv
importuje ciągi CSV z pliku Processes.csv.
Ciągi są zapisywane w zmiennej $P
. Zmienna $P
jest wysyłana w dół potoku do polecenia cmdlet Get-Member
, które wyświetla właściwości zaimportowanych ciągów CSV. Zmienna $P
jest przesyłana przez potok do polecenia cmdlet Format-Table
, aby wyświetlić obiekty.
Przykład 2. Określanie ogranicznika
W tym przykładzie pokazano, jak używać parametru delimitera polecenia cmdlet Import-Csv
.
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table
Polecenie cmdlet Get-Process
wysyła obiekty procesów wzdłuż potoku do Export-Csv
. Polecenie cmdlet Export-Csv
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 cmdlet Import-Csv
importuje ciągi CSV z pliku Processes.csv. Ciągi są zapisywane w zmiennej $P
. Zmienna $P
jest wysyłana w dół potoku do polecenia cmdlet Format-Table
.
Przykład 3. Określ bieżącą kulturę ogranicznika
W tym przykładzie pokazano, jak używać polecenia cmdlet Import-Csv
z parametrem UseCulture.
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture
Import-Csv -Path .\Processes.csv -UseCulture
Polecenie cmdlet Get-Culture
używa zagnieżdżonych właściwości TextInfo i ListSeparator, aby uzyskać domyślny separator listy bieżącej kultury. Polecenie cmdlet Get-Process
wysyła obiekty procesów w dół potoku do Export-Csv
. Polecenie cmdlet Export-Csv
konwertuje obiekty procesu na ciągi CSV i zapisuje ciągi w pliku Processes.csv. Parametr UseCulture używa domyślnego separatora list dla bieżącej kultury. Polecenie cmdlet Import-Csv
importuje ciągi CSV z pliku Processes.csv.
Przykład 4. Zmienianie nazw właściwości w zaimportowanym obiekcie
W tym przykładzie pokazano, jak użyć parametru Header z Import-Csv
, aby zmienić nazwy właściwości w wynikowym zaimportowanym 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 cmdlet Start-Job
uruchamia zadanie w tle, które jest uruchamiane Get-Process
. Obiekt zadania jest przekazywany dalej przez potok do polecenia cmdlet Export-Csv
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 w wersji 6 i nowszych. Zmienna $Header
zawiera nagłówek niestandardowy, który zastępuje następujące wartości domyślne: HasMoreData, JobStateInfo, PSBeginTime, PSEndTimei PSJobTypeName. Zmienna $A
używa polecenia cmdlet Get-Content
w celu pobrania ciągu CSV z pliku Jobs.csv. Zmienna $A
służy do usuwania domyślnego nagłówka z pliku. Polecenie cmdlet Out-File
zapisuje nową wersję pliku Jobs.csv w zmiennej $A
. Polecenie cmdlet Import-Csv
importuje plik Jobs.csv i używa parametru Header , aby zastosować zmienną $Header
. Zmienna $J
zawiera zaimportowane PSCustomObject i wyświetla obiekt w konsoli programu PowerShell.
Przykład 5. Tworzenie 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 cmdlet Get-Content
wyświetla plik Links.csv. Polecenie cmdlet Import-Csv
importuje plik Links.csv. Parametr nagłówka określa nazwy właściwości LinkId i TopicTitle. Obiekty są przechowywane w zmiennej $A
. Polecenie cmdlet Get-Member
pokazuje nazwy właściwości z parametru Header. Polecenie cmdlet Where-Object
wybiera obiekty z właściwością TopicTitle zawierającą alias .
Przykład 6. Importowanie woluminu CSV, który nie ma wartości
W tym przykładzie pokazano, jak polecenie cmdlet Import-Csv
w programie PowerShell reaguje, gdy wiersz nagłówka w pliku CSV zawiera wartość null lub pustą.
Import-Csv
zastępuje domyślną nazwę brakującego wiersza nagłówka, który staje się nazwą właściwości obiektu, który Import-Csv
zwraca.
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
Polecenie cmdlet Get-Content
wyświetla plik Projects.csv
. W wierszu nagłówka brakuje wartości między ProjectName a Ukończono. Polecenie cmdlet Import-Csv
importuje plik Projects.csv
i wyświetla komunikat ostrzegawczy, ponieważ H1 jest domyślną nazwą nagłówka.
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 (;
) należy go ująć w pojedynczy cudzysłów. Aby określić znaki specjalne, takie jak tabulator (`t
), należy je ująć w znaki podwójnego cudzysłowu.
Jeśli określisz znak inny niż rzeczywisty separator ciągu w pliku, Import-Csv
nie jest w stanie utworzyć obiektów z ciągów CSV i zwraca pełne ciągi CSV.
Typ: | Char |
Position: | 1 |
Domyślna wartość: | comma (,) |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Encoding
Określa kodowanie zaimportowanych plików CSV. Wartość domyślna to utf8NoBOM
.
Dopuszczalne wartości tego parametru są następujące:
-
ascii
: używa kodowania zestawu znaków ASCII (7-bitowych). -
ansi
: używa kodowania dla strony kodowej ANSI bieżącej kultury. Ta opcja została dodana w programie PowerShell 7.4. -
bigendianunicode
: Koduje w formacie UTF-16, używając porządku bajtów big-endian. -
bigendianutf32
: Koduje w formacie UTF-32 przy użyciu kolejności bajtów big-endian. -
oem
: używa domyślnego kodowania dla programów MS-DOS i konsoli. -
unicode
: Koduje w formacie UTF-16, używając układu bajtów little-endian. -
utf7
: koduje w formacie UTF-7. -
utf8
: koduje w formacie UTF-8. -
utf8BOM
: koduje w formacie UTF-8 za pomocą znacznika kolejności bajtów (BOM) -
utf8NoBOM
: kodowanie w formacie UTF-8 bez znaku kolejności bajtów (BOM) -
utf32
: koduje w formacie UTF-32.
Począwszy od programu PowerShell 6.2, w parametrze Kodowanie można używać również numerycznych identyfikatorów zarejestrowanych stron kodu (na przykład -Encoding 1251
) lub nazw tekstowych zarejestrowanych stron kodu (na przykład -Encoding "windows-1251"
). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą Encoding.CodePage.
Począwszy od programu PowerShell 7.4, można użyć wartości
Notatka
UTF-7* nie jest już zalecane do użycia. Zgodnie z programem PowerShell 7.1 ostrzeżenie jest zapisywane, jeśli określisz
Typ: | Encoding |
Dopuszczalne wartości: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Domyślna wartość: | UTF8NoBOM |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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
.
Wprowadź nagłówki kolumn jako listę rozdzielaną znakami. Nie 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.
Podczas używania parametru nagłówka usuń oryginalny wiersz nagłówka z pliku CSV. W przeciwnym razie Import-Csv
tworzy dodatkowy obiekt z elementów w wierszu nagłówka.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-LiteralPath
Określa ścieżkę do pliku CSV do zaimportowania. W przeciwieństwie do Pathwartość 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 ująć ją w pojedynczy cudzysłów. Pojedyncze znaki cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Typ: | String[] |
Aliasy: | PSPath, LP |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Path
Określa ścieżkę do pliku CSV do zaimportowania.
Możesz również przekazać ścieżkę do Import-Csv
.
Typ: | String[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-UseCulture
Używa separatora listy dla bieżącej kultury do oddzielania elementów. Aby znaleźć separator listy dla kultury, użyj następującego polecenia: (Get-Culture).TextInfo.ListSeparator
.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Możesz przekierować ciąg zawierający ścieżkę do tego cmdletu.
Dane wyjściowe
To polecenie cmdlet zwraca obiekty opisane przez zawartość w pliku CSV.
Uwagi
Program PowerShell zawiera następujące aliasy dla Import-Csv
:
- Wszystkie platformy:
ipcsv
Ponieważ zaimportowane obiekty są wersjami CSV typu obiektu, nie są rozpoznawane i formatowane przez wpisy formatowania typu programu PowerShell, które formatują wersje obiektów innych niż CSV.
Wynikiem polecenia Import-Csv
jest kolekcja ciągów, które tworzą obiekt niestandardowy przypominający tabelę. Każdy wiersz jest oddzielnym ciągiem, więc można 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 Header. 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żywa 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ą znakami 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ą one reprezentowane przez nazwę wartości właściwości.
Export-Csv
nie eksportuje metod obiektu.
Import-Csv
obsługuje również format dziennika rozszerzonego W3C. Wiersze rozpoczynające się od znaku hash (#
) są traktowane jako komentarze i są ignorowane, chyba że komentarz zaczyna się od #Fields:
i zawiera listę rozdzielaną nazw kolumn. W takim przypadku polecenie cmdlet używa tych nazw kolumn. Jest to standardowy format dla usług IIS systemu Windows i innych dzienników serwera sieci Web. Aby uzyskać więcej informacji, zobacz rozszerzony format pliku dziennika.