Megosztás a következőn keresztül:


Import-Csv

Táblázatszerű egyéni objektumokat hoz létre egy karakterrel tagolt értékfájl (CSV) elemeiből.

Syntax

DelimiterPath (Alapértelmezett)

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

A Import-Csv parancsmag táblaszerű egyéni objektumokat hoz létre a CSV-fájlok elemeiből. A CSV-fájl minden oszlopa az egyéni objektum tulajdonságává válik, a sorokban lévő elemek pedig a tulajdonságértékekké. Import-Csv bármilyen CSV-fájlon működik, beleértve a Export-Csv parancsmag által létrehozott fájlokat is.

A Import-Csv parancsmag paramétereivel megadhatja az oszlopfejlécsort és az elemek elválasztóját, vagy közvetlenül megadhatja, hogy a Import-Csv az aktuális kultúra listaelválasztóját használja elemelválasztóként.

A ConvertTo-Csv és ConvertFrom-Csv parancsmagokkal is átalakíthat objektumokat CSV-sztringekké (és vissza). Ezek a parancsmagok megegyeznek a Export-Csv és Import-Csv parancsmagokkal, azzal a kivétellel, hogy a folyamat adataival dolgoznak a fájlok helyett.

Ha egy CSV-fájl fejlécsor-bejegyzése üres vagy null értéket tartalmaz, a PowerShell beszúr egy alapértelmezett fejlécsornevet, és figyelmeztető üzenetet jelenít meg.

A PowerShell 6.0-tól kezdve Import-Csv mostantól támogatja a W3C kiterjesztett naplófájlformátumot.

Példák

1. példa: Folyamatobjektumok importálása

Ez a példa bemutatja, hogyan exportálhatja és importálhatja a folyamatobjektumok CSV-fájlját.

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

A Get-Process parancsmag folyamatobjektumokat küld a csővezetéken keresztül a Export-Csv-hez. A Export-Csv parancsmag CSV-sztringekké alakítja a folyamatobjektumokat, és menti a sztringeket a Processes.csv fájlban. A Import-Csv parancsmag importálja a CSV-sztringeket a Processes.csv fájlból. A sztringek a $P változóba vannak mentve. A $P változót a rendszer továbbítja a csővezetékbe a Get-Member parancsmagnak, amely az importált CSV-sztringek tulajdonságait mutatja. A $P változót a rendszer a folyamatkörnyezetbe továbbítja a Format-Table parancsmagnak, amely megjeleníti az objektumokat.

2. példa: A határoló megadása

Ez a példa bemutatja, hogyan használható a parancsmag Import-Csv paramétere.

Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table

A Get-Process parancsmag folyamatobjektumokat küld a csővezetéken a(z) Export-Csvelé. A Export-Csv parancsmag CSV-sztringekké alakítja a folyamatobjektumokat, és menti a sztringeket a Processes.csv fájlban. A elválasztóparaméter egy konkrét kettőspont elválasztót határoz meg. A Import-Csv parancsmag importálja a CSV-sztringeket a Processes.csv fájlból. A sztringek a $P változóba vannak mentve. A $P változót a csővezetéken keresztül továbbítják a Format-Table cmdlethez.

3. példa: Adja meg az elválasztó aktuális kultúráját

Ez a példa bemutatja, hogyan használhatja a Import-Csv parancsmagot a UseCulture paraméterrel.

(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture
Import-Csv -Path .\Processes.csv -UseCulture

A Get-Culture parancsmag a Beágyazott tulajdonságokat TextInfo és ListSeparator használja az aktuális kultúra alapértelmezett listaelválasztójának lekéréséhez. A Get-Process parancsmag folyamatobjektumokat küld a csővezetéken a(z) Export-Csvelé. A Export-Csv parancsmag CSV-sztringekké alakítja a folyamatobjektumokat, és menti a sztringeket a Processes.csv fájlban. A UseCulture paraméter az aktuális kultúra alapértelmezett listaelválasztóját használja. A Import-Csv parancsmag importálja a CSV-sztringeket a Processes.csv fájlból.

4. példa: Tulajdonságnevek módosítása importált objektumban

Ez a példa bemutatja, hogyan módosíthatja a tulajdonságok nevét az eredményként kapott importált objektumban a Fejléc paraméter használatával Import-Csv.

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]

A Start-Job parancsmag elindít egy háttérmunkát, amelyet Get-Processfuttat. A rendszer egy feladatobjektumot küld le a folyamatba a Export-Csv parancsmodulehoz, és CSV-formátumú karakterlánccá konvertálja. A NoTypeInformation paraméter eltávolítja a típusinformációs fejlécet a CSV-kimenetből, és nem kötelező a PowerShell 6-os vagy újabb verziójában. A $Header változó egy egyéni fejlécet tartalmaz, amely a következő alapértelmezett értékeket helyettesíti: HasMoreData, JobStateInfo, PSBeginTime, PSEndTimeés PSJobTypeName. A $A változó a Get-Content parancsmaggal szerzi be a CSV-karakterláncot a Jobs.csv fájlból. A $A változó az alapértelmezett fejléc eltávolítására szolgál a fájlból. A Out-File parancsmag a Jobs.csv fájl új verzióját menti a $A változóba. A Import-Csv parancsmag importálja a Jobs.csv fájlt, és a Fejléc paraméter használatával alkalmazza a $Header változót. A $J változó tartalmazza az importált PSCustomObject, és megjeleníti az objektumot a PowerShell-konzolon.

5. példa: Egyéni objektum létrehozása CSV-fájllal

Ez a példa bemutatja, hogyan hozhat létre egyéni objektumot a PowerShellben CSV-fájl használatával.

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

A Links.csv fájl létrehozásához használja a Get-Content kimenetben látható értékeket.

A Get-Content parancsmag megjeleníti a Links.csv fájlt. A Import-Csv parancsmag importálja a Links.csv fájlt. A Fejléc paraméter megadja a LinkId és TopicTitletulajdonságneveket. Az objektumok a $A változóban vannak tárolva. A Get-Member parancsmag a Fejléc paraméter tulajdonságneveit jeleníti meg. A Where-Object parancsmag kijelöli az TopicTitle tulajdonsággal rendelkező objektumokat, amelyek aliastartalmaznak.

6. példa: Érték nélküli CSV importálása

Ez a példa bemutatja, hogyan válaszol a PowerShell Import-Csv parancsmagja, ha a CSV-fájl fejlécsora null vagy üres értéket tartalmaz. Import-Csv a hiányzó fejlécsor alapértelmezett nevét helyettesíti, amely az Import-Csv által visszaadott objektum tulajdonságneve lesz.

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

A Get-Content parancsmag megjeleníti a Projects.csv fájlt. A fejlécsor nem tartalmaz értéket ProjectName és Befejezettközött. A Import-Csv parancsmag importálja a Projects.csv fájlt, és figyelmeztető üzenetet jelenít meg, mert H1 alapértelmezett fejlécnév.

Paraméterek

-Delimiter

A CSV-fájl tulajdonságértékeit elválasztó elválasztó karaktert adja meg. Az alapértelmezett érték egy vessző (,).

Adjon meg egy karaktert, például kettőspontot (:). Ha pontosvesszőt (;) szeretne megadni, akkor azt idézőjelek közé kell foglalnia. Ha escape-elt speciális karaktereket szeretne megadni, például a tab (`t) karaktert, zárja őket dupla idézőjelek közé.

Ha a fájlban a tényleges sztringelválasztótól eltérő karaktert ad meg, Import-Csv nem tudja létrehozni az objektumokat a CSV-sztringekből, és a teljes CSV-sztringeket adja vissza.

Paramétertulajdonságok

Típus:Char
Alapértelmezett érték:comma (,)
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

DelimiterPath
Position:1
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False
DelimiterLiteralPath
Position:1
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-Encoding

Az importált CSV-fájl kódolását adja meg. Az alapértelmezett érték a utf8NoBOM.

A paraméter elfogadható értékei a következők:

  • ascii: Az ASCII (7 bites) karakterkészlet kódolását használja.
  • ansi: Az aktuális kultúra ANSI-kódlapjának kódolását használja. Ez a beállítás a PowerShell 7.4-ben lett hozzáadva.
  • bigendianunicode: Az UTF-16 formátumú kódolást a big-endian bájtsorrend alkalmazásával végzi.
  • bigendianutf32: UTF-32 formátumban kódol nagyvégű bájtsorrend használatával.
  • oem: Az alapértelmezett kódolást használja MS-DOS és konzolprogramokhoz.
  • unicode: Az UTF-16 formátumban kódol kis végű bájtsorrend használatával.
  • utf7: UTF-7 formátumban kódol.
  • utf8: UTF-8 formátumban kódol.
  • utf8BOM: UTF-8 formátumban kódolódik bájt sorrendi jel (BOM) használatával
  • utf8NoBOM: UTF-8 formátumban kódol byte order mark (BOM) nélkül
  • utf32: UTF-32 formátumban kódol.

A PowerShell 6.2-től kezdődően a Kódolás paraméter lehetővé teszi a regisztrált kódlapok (például -Encoding 1251) numerikus azonosítóit vagy a regisztrált kódlapok sztringneveit (például -Encoding "windows-1251"). További információt a Encoding.CodePage.NET-dokumentációjában talál.

A PowerShell 7.4-től kezdve a Ansi paraméter értékével anélkül adhat meg numerikus azonosítót az aktuális kultúra ANSI-kódlapjához, hogy manuálisan kellene megadnia.

Megjegyzés:

UTF-7* már nem ajánlott. PowerShell 7.1-től kezdve figyelmeztetés jelenik meg, ha utf7-et ad meg a kódolás paraméterhez.

Paramétertulajdonságok

Típus:Encoding
Alapértelmezett érték:UTF8NoBOM
Elfogadott értékek:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-Header

Egy másik oszlopfejlécsort ad meg az importált fájlhoz. Az oszlopfejléc határozza meg a Import-Csváltal létrehozott objektumok tulajdonságneveit.

Írja be az oszlopfejléceket karakterrel elválasztott listaként. Ne tegye idézőjelek közé a fejlécsztringet. Minden oszlopfejlécet egyetlen idézőjelbe foglal.

Ha kevesebb oszlopfejlécet ad meg, mint amennyi adatoszlop van, a rendszer elveti a többi adatoszlopot. Ha több oszlopfejlécet ad meg, mint az adatoszlopok, a további oszlopfejlécek üres adatoszlopokkal jönnek létre.

A Fejléc paraméter használatakor törölje az eredeti fejlécsort a CSV-fájlból. Ellenkező esetben Import-Csv létrehoz egy további objektumot a fejlécsor elemeiből.

Paramétertulajdonságok

Típus:

String[]

Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-LiteralPath

Megadja az importálandó CSV-fájl elérési útját. A Path-tal ellentétben a LiteralPath paraméter értéke pontosan a beírt módon lesz használva. A rendszer egyetlen karaktert sem értelmez helyettesítő karakterként. Ha az elérési útvonal escape karaktereket tartalmaz, tedd azt egyes idézőjelek közé. Az egyes idézőjelek azt mondják a PowerShellnek, hogy egyetlen karaktert se értelmezzen escape szekvenciaként.

Paramétertulajdonságok

Típus:

String[]

Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False
Aliasok:PSPath, LP

Paraméterkészletek

DelimiterLiteralPath
Position:Named
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False
CultureLiteralPath
Position:Named
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False

-Path

Megadja az importálandó CSV-fájl elérési útját. A Import-Csvútvonalát is továbbíthatja.

Paramétertulajdonságok

Típus:

String[]

Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

DelimiterPath
Position:0
Kötelező:True
Folyamatból származó érték:True
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False
CulturePath
Position:0
Kötelező:True
Folyamatból származó érték:True
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False

-UseCulture

Az aktuális kultúra listaelválasztót használja elválasztó elemként. Egy kultúra listaelválasztójának megkereséséhez használja a következő parancsot: (Get-Culture).TextInfo.ListSeparator.

Paramétertulajdonságok

Típus:SwitchParameter
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

CulturePath
Position:Named
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False
CultureLiteralPath
Position:Named
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

CommonParameters

Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.

Bevitelek

String

Egy elérési utat tartalmazó karakterláncot küldhet tovább ehhez a cmdlethez.

Kimenetek

Object

Ez a parancsmag a CSV-fájl tartalma által leírt objektumokat adja vissza.

Jegyzetek

A PowerShell a következő aliasokat tartalmazza Import-Csv:

  • Minden platform:
    • ipcsv

Mivel az importált objektumok az objektumtípus CSV-verziói, a PowerShell-típusbejegyzések, amelyek az objektumtípus nem CSV-verzióit formázzák, nem ismerik fel és nem formázzák azokat.

A Import-Csv parancs eredménye olyan sztringek gyűjteménye, amelyek táblázatszerű egyéni objektumot alkotnak. Minden sor külön sztring, így az objektum Darabszám tulajdonságával megszámlálhatja a táblázat sorait. Az oszlopok az objektum tulajdonságai, a sorok elemei pedig a tulajdonságértékek.

Az oszlopfejlécsor határozza meg az oszlopok számát és az oszlopneveket. Az oszlopnevek az objektumok tulajdonságainak nevei is. Az első sort az oszlopfejlécekként értelmezi a rendszer, kivéve, ha a Fejléc paramétert használja az oszlopfejlécek megadásához. Ha bármelyik sor több értékkel rendelkezik, mint a fejlécsor, a további értékek figyelmen kívül lesznek hagyva.

Ha az oszlopfejlécsorból hiányzik egy érték, vagy null vagy üres értéket tartalmaz, Import-CsvH, majd egy számot használ a hiányzó oszlopfejléchez és tulajdonságnévhez.

A CSV-fájlban minden objektumot az objektum tulajdonságértékeinek karakterrel tagolt listája jelöl. A tulajdonságértékek sztringekké alakulnak az objektum ToString() metódusával, így a tulajdonságérték neve jelöli őket. Export-Csv nem exportálja az objektum metódusait.

Import-Csv a W3C kiterjesztett naplóformátumot is támogatja. A kivonat karakterrel kezdődő sorokat (#) a program megjegyzésekként kezeli, és figyelmen kívül hagyja, kivéve, ha a megjegyzés #Fields: kezdődik, és az oszlopnevek tagolt listáját tartalmazza. Ebben az esetben a parancsmag ezeket az oszlopneveket használja. Ez a Windows IIS és más webkiszolgálói naplók szabványos formátuma. További információ: Bővített naplófájlformátum.