Udostępnij za pomocą


Import-Csv

Tworzy obiekty niestandardowe przypominające tabelę na podstawie elementów w pliku z wartościami rozdzielanymi przecinkami (CSV).

Składnia

Delimiter (domyślnie)

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

UseCulture

Import-Csv
    [[-Path] <string[]>]
    -UseCulture
    [-LiteralPath <string[]>]
    [-Header <string[]>]
    [-Encoding <string>]
    [<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 Export-CSV polecenia cmdlet and 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 znaku byte-order-mark (BOM) do wykrywania formatu kodowania pliku. Jeśli plik nie ma znacznika BOM, uznaje, że kodowanie to 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 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 przekazywana w dół potoku do cmdlet Get-Member, które wyświetla właściwości zaimportowanych ciągów CSV. Zmienna $P jest przekazywana wzdłuż potoku do polecenia typu cmdlet Format-Table i wyświetla obiekty.

Przykład 2. Określanie ogranicznika

W tym przykładzie pokazano, jak używać parametru ogranicznika 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 cmdletu 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 oraz ListSeparator w celu uzyskania domyślnego separatora listy dla bieżącej kultury. 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 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 woluminu CSV i jest opcjonalny w programie PowerShell Core. 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 pliku CSV, w którym brakuje 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 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 Get-Content przykładu.

Polecenie Get-Content cmdlet wyświetla plik Projects.csv. W wierszu nagłówka brakuje wartości między ProjectName a Ukończono. 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 będzie można utworzyć obiektów z ciągów CSV i zwróci ciągi CSV.

Właściwości parametru

Typ:Char
Domyślna wartość:comma (,)
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

Delimiter
Position:1
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Encoding

Określa typ kodowania dla pliku docelowego. Wartość domyślna to Default.

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ślna Używa kodowania odpowiadającego aktywnej stronie kodu systemu (zwykle ANSI).
  • OEM Używa kodowania odpowiadającego bieżącej stronie kodowej producenta OEM systemu.
  • unicode używa utF-16 z małą kolejnością bajtów endian.
  • UTF7 używa protokołu UTF-7.
  • UTF8 używa protokołu UTF-8.
  • UTF32 używa formatu UTF-32 z kolejnością bajtów little-endian.

Właściwości parametru

Typ:Encoding
Domyślna wartość:Default
Dopuszczalne wartości:ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów: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.

Nagłówki kolumn należy wprowadzać jako listę rozdzieloną przecinkami. Nie należy umieszczać ciągu nagłówka w cudzysłowie. Umieść każdy nagłówek kolumny w pojedynczym cudzysłowie.

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.

Właściwości parametru

Typ:

String[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-LiteralPath

Określa ścieżkę do pliku CSV do zaimportowania. W przeciwieństwie do Path, wartość parametru LiteralPath jest używana dokładnie tak, jak ją wpisano. Żadne znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów. Pojedyncze cudzysłowy wskazują programowi PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.

Właściwości parametru

Typ:

String[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False
Aliasy:PSPath

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:True
Wartość z pozostałych argumentów:False

-Path

Określa ścieżkę do pliku CSV do zaimportowania. Możesz również przekierować ścieżkę do Import-Csv.

Właściwości parametru

Typ:

String[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:0
Obowiązkowe:False
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów: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.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

UseCulture
Position:Named
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

CommonParameters

To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Dane wejściowe

String

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ż zaimportowane obiekty są wersjami CSV typu obiektu, nie są rozpoznawane i formatowane przez wpisy formatowania typu programu PowerShell, które formatują wersje typu obiektu inne 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.

Nagłówek wiersza 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ą przecinkami listę wartości właściwości obiektu. Wartości właściwości są konwertowane na ciągi znaków przy użyciu metody ToString() obiektu, dzięki czemu są one reprezentowane przez nazwę wartości właściwości. Export-Csv Nie eksportuje metod obiektu.