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

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>]

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ármely CSV-fájlon működik, beleértve a Export-Csv parancsmag által létrehozott fájlokat is.

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

Az objektumok CSV-sztringekké (és vissza) alakíthatók az objektumok és ConvertFrom-Csv a ConvertTo-Csv parancsmagok használatával is. Ezek a parancsmagok megegyeznek a parancsmagokkal, Import-Csv azzal a Export-CSV kivétellel, hogy nem foglalkoznak fájlokkal.

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 Import-Csv kezdve mostantól támogatja a W3C kiterjesztett naplófájlformátumát.

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 folyamaton Export-Csva . A Export-Csv parancsmag CSV-sztringekké alakítja a folyamatobjektumokat, és menti a sztringeket a Processes.csv fájlba. A Import-Csv parancsmag importálja a CSV-sztringeket a Processes.csv fájlból. A sztringek a változóba $P vannak mentve. A $P változót a rendszer elküldi a folyamatnak az Get-Member importált CSV-sztringek tulajdonságait megjelenítő parancsmagnak. A $P változót a rendszer elküldi a folyamatnak a Format-Table parancsmagnak, és megjeleníti az objektumokat.

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

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

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 folyamaton keresztül.Export-Csv A Export-Csv parancsmag CSV-sztringekké alakítja a folyamatobjektumokat, és menti a sztringeket a Processes.csv fájlba. A határoló paraméter kettőspont-elválasztót ad meg. A Import-Csv parancsmag importálja a CSV-sztringeket a Processes.csv fájlból. A sztringek a változóba $P vannak mentve. A $P változót a rendszer elküldi a folyamatnak a Format-Table parancsmagnak.

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 TextInfo és a ListSeparator beágyazott tulajdonságokat 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 folyamaton keresztül.Export-Csv A Export-Csv parancsmag CSV-sztringekké alakítja a folyamatobjektumokat, és menti a sztringeket a Processes.csv fájlba. 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 objektum Fejléc paraméterével 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érfeladatot, amely fut Get-Process. A rendszer egy feladatobjektumot küld le a folyamatról a Export-Csv parancsmagra, és CSV-sztringgé alakítja. 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 váltja fel: HasMoreData, JobStateInfo, PSBeginTime, P Standard kiadás ndTime és PSJobTypeName. A $A változó a Get-Content parancsmaggal szerzi be a CSV-sztringet 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 menti a Jobs.csv fájl új verzióját 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 változót $Header . A $J változó tartalmazza az importált PSCustomObject objektumot , é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 kimenetben Get-Content 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 a LinkId és a TopicTitle tulajdonságneveket adja meg. Az objektumok a változóban $A vannak tárolva. A Get-Member parancsmag a Fejléc paraméter tulajdonságneveit jeleníti meg. A Where-Object parancsmag az aliast tartalmazó TopicTitle tulajdonsággal rendelkező objektumokat választja ki.

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

Ez a példa bemutatja, hogyan reagál a Import-Csv PowerShell parancsmagja, ha egy 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 a visszaadott objektum Import-Csv 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 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

A Projects.csv fájl létrehozásához használja a példa kimenetében Get-Content látható értékeket.

A Get-Content parancsmag megjeleníti a Projects.csv fájlt. A fejlécsorból hiányzik egy érték a ProjectName és a Completed között. A Import-Csv parancsmag importálja a Projects.csv fájlt, és figyelmeztető üzenetet jelenít meg, mivel a H1 az alapértelmezett fejlécnév. A (Import-Csv -Path .\Projects.csv).H1 parancs lekéri a H1 tulajdonságértékeket, és figyelmeztetést jelenít meg.

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 (:). Pontosvessző (;) megadásához a pontosvesszőt idézőjelek közé kell foglalni. Ha speciális karaktereket szeretne megadni, például a tabulátort (`t), tegye dupla idézőjelek közé.

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

Type:Char
Position:1
Default value:comma (,)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Az importált CSV-fájl kódolását adja meg. Az alapértelmezett érték 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: UTF-16 formátumban kódolja a big-endian bájtsorrendet.
  • bigendianutf32: UTF-32 formátumban kódolja a big-endian bájtsorrendet.
  • oem: Az MS-DOS és a konzolprogramok alapértelmezett kódolását használja.
  • unicode: UTF-16 formátumban kódolja a kis végű bájtsorrendet.
  • utf7: UTF-7 formátumban kódol.
  • utf8: UTF-8 formátumban kódol.
  • utf8BOM: UTF-8 formátumban kódol byte order mark (BOM)
  • 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 AnsiKódolás 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.

Feljegyzés

Az UTF-7* már nem ajánlott. A PowerShell 7.1-ről figyelmeztetést ír, ha utf7 megadja a Kódolás paramétert.

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Header

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

Í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. Import-Csv Ellenkező esetben egy további objektumot hoz létre a fejlécsor elemeiből.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 út tartalmaz escape karaktereket, csatolja egy idézőjelek közé. Az idézőjelek azt mondják a PowerShellnek, hogy ne értelmezzen karaktereket feloldósorozatként.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

Megadja az importálandó CSV-fájl elérési útját. Az elérési utat Import-Csvis beszűkítheti.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Bevitelek

String

A parancsmag elérési útját tartalmazó sztringet csövezheti.

Kimenetek

Object

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

Jegyzetek

A PowerShell a következő aliasokat Import-Csvtartalmazza:

  • Minden platform:
    • ipcsv

Mivel az importált objektumok az objektumtípus CSV-verziói, nem ismeri fel és formázza őket az objektumtípus nem CSV-verzióit formázó PowerShell-típusú formázási bejegyzések.

A parancs eredménye Import-Csv olyan sztringek gyűjteménye, amelyek táblázatszerű egyéni objektumot alkotnak. Minden sor egy 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-Csv a H értéket, majd a hiányzó oszlopfejléc és tulajdonságnév számát használja.

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 azokat a tulajdonságérték neve jelöli. Export-Csv nem exportálja az objektum metódusait.

Import-Csv támogatja a W3C kiterjesztett naplóformátumot is. A sorokat # a program megjegyzésként kezeli, és figyelmen kívül hagyja, kivéve, ha a megjegyzés az #Fields: 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.