Udostępnij za pomocą


ConvertFrom-Csv

Konwertuje właściwości obiektu w formacie wartości rozdzielanej znakami (CSV) na wersje CSV oryginalnych obiektów.

Składnia

Delimiter (domyślnie)

ConvertFrom-Csv
    [[-Delimiter] <Char>]
    [-InputObject] <PSObject[]>
    [-Header <String[]>]
    [<CommonParameters>]

UseCulture

ConvertFrom-Csv
    [-InputObject] <PSObject[]>
    -UseCulture
    [-Header <String[]>]
    [<CommonParameters>]

Opis

Polecenie cmdlet ConvertFrom-Csv konwertuje dane wartości rozdzielanych znakami (CSV) na psObject typ obiektów dla każdego wiersza danych CSV. Nowe obiekty są zapisywane w potoku w kolejności odczytu z danych CSV. Wartości w wierszu nagłówka kolumny csv stają się nazwami właściwości dodanych do każdej nowej psObject.

Obiekty tworzone ConvertFrom-Csvobiektu PSObject typu dla każdego wiersza w pliku CSV. Wartości właściwości obiektów CSV to wersje ciągów wartości właściwości oryginalnych obiektów. Wersje CSV obiektów nie mają żadnych metod.

Możesz również użyć poleceń cmdlet Export-Csv i Import-Csv, aby przekonwertować obiekty na ciągi CSV w pliku i z powrotem. Te polecenia cmdlet są takie same jak polecenia cmdlet ConvertTo-Csv i ConvertFrom-Csv, z tą różnicą, że zapisują ciągi CSV w pliku.

Typ PSObject zachowuje kolejność właściwości w kolejności nagłówka kolumny. Oznacza to, że po przekonwertowaniu obiektów z powrotem na format CSV uzyskasz taką samą kolejność kolumn.

Przykłady

Przykład 1. Konwertowanie procesów na komputerze lokalnym na format CSV

W tym przykładzie pokazano, jak przekonwertować procesy na komputerze lokalnym na format CSV, a następnie przywrócić je do formularza obiektu.

$P = Get-Process | ConvertTo-Csv
$P | ConvertFrom-Csv

Polecenie cmdlet Get-Process wysyła procesy w dół potoku do ConvertTo-Csv. Polecenie cmdlet ConvertTo-Csv konwertuje obiekty procesu na serię ciągów CSV. Polecenie cmdlet ConvertFrom-Csv konwertuje ciągi CSV na wersje CSV oryginalnych obiektów procesu. Ciągi CSV są zapisywane w zmiennej $P.

Przykład 2. Konwertowanie obiektu danych na format CSV, a następnie na format obiektu CSV

W tym przykładzie pokazano, jak przekonwertować obiekt danych na format CSV, a następnie do formatu obiektu CSV.

$Date = Get-Date | ConvertTo-Csv -Delimiter ';'
ConvertFrom-Csv -InputObject $Date -Delimiter ';'

Pierwsze polecenie używa Get-Date, aby wysłać bieżącą datę i godzinę w dół potoku do ConvertTo-Csv. Polecenie cmdlet ConvertTo-Csv konwertuje obiekt daty na serię ciągów CSV. Parametr ogranicznika służy do określania ogranicznika średnika. Ciągi są zapisywane w zmiennej $Date.

Przykład 3. Użyj parametru nagłówka, aby zmienić nazwy właściwości

W tym przykładzie pokazano, jak użyć parametru Header z ConvertFrom-Csv, aby zmienić nazwy właściwości w wynikowym zaimportowanym obiekcie.

$J = Start-Job -ScriptBlock { Get-Process } | ConvertTo-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 $J
$J = $J[1..($J.Count - 1)]
$J | ConvertFrom-Csv -Header $Header
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 wysyłany w dół potoku do ConvertTo-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 $J zawiera ciąg CSV i służy do usuwania nagłówka domyślnego. Polecenie cmdlet ConvertFrom-Csv konwertuje ciąg CSV na PSCustomObject i używa parametru header, aby zastosować zmienną $Header.

Przykład 4. Konwertowanie ciągów CSV obiektów usługi

W tym przykładzie pokazano, jak używać polecenia cmdlet ConvertFrom-Csv z parametrem UseCulture.

(Get-Culture).TextInfo.ListSeparator
$Services = (Get-Service | ConvertTo-Csv)
ConvertFrom-Csv -InputObject $Services -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-Service wysyła obiekty usługi w dół potoku do ConvertTo-Csv. ConvertTo-Csv konwertuje obiekty usługi na serię ciągów CSV. Ciągi CSV są przechowywane w zmiennej $Services. Polecenie cmdlet ConvertFrom-Csv używa parametru InputObject i konwertuje ciągi CSV ze zmiennej $Services. Parametr UseCulture używa domyślnego separatora list dla bieżącej kultury.

Gdy jest używany parametr UseCulture, upewnij się, że domyślny separator listy bieżącej kultury jest zgodny z ogranicznikiem używanym w ciągach CSV. W przeciwnym razie ConvertFrom-Csv nie może wygenerować obiektów z ciągów CSV.

Przykład 5. Konwertowanie danych CSV w rozszerzonym formacie dziennika W3C

W tym przykładzie pokazano, jak przekonwertować dane CSV w rozszerzonym formacie dziennika W3C na obiekty.

$logData = @"
#Version: 1.0
#Date: 12-Jan-1996 00:00:00
#Fields: time,cs-method,cs-uri
00:34:23,GET,/foo/bar.html
12:21:16,GET,/foo/bar.html
12:45:52,GET,/foo/bar.html
12:57:34,GET,/foo/bar.html
"@
ConvertFrom-Csv $logData
time     cs-method cs-uri
----     --------- ------
00:34:23 GET       /foo/bar.html
12:21:16 GET       /foo/bar.html
12:45:52 GET       /foo/bar.html
12:57:34 GET       /foo/bar.html

Parametry

-Delimiter

Określa ogranicznik oddzielający wartości właściwości w ciągach CSV. Wartość domyślna to przecinek (,). Wprowadź znak, taki jak dwukropek (:). Aby określić średnik (;) należy go ująć w pojedynczy cudzysłów.

Jeśli określisz znak inny niż rzeczywisty ogranicznik ciągu w pliku, ConvertFrom-Csv nie można utworzyć obiektów z ciągów CSV i zwraca 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

-Header

Określa alternatywny wiersz nagłówka kolumny dla zaimportowanego ciągu. Nagłówek kolumny określa nazwy właściwości obiektów utworzonych przez ConvertFrom-Csv.

Wprowadź nagłówki kolumn jako listę rozdzielaną znakami. Nie ujęć ciągu nagłówka w cudzysłów. 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.

W przypadku używania parametru header pomiń ciąg nagłówka kolumny z ciągów CSV. W przeciwnym razie to polecenie cmdlet 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

-InputObject

Określa ciągi CSV, które mają być konwertowane na obiekty. Wprowadź zmienną zawierającą ciągi CSV lub wpisz polecenie lub wyrażenie, które pobiera ciągi CSV. Możesz również przesłać potoki ciągów CSV do ConvertFrom-Csv.

Właściwości parametru

Typ:

PSObject[]

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

Zestawy parametrów

(All)
Position:0
Obowiązkowe:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:True
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 przekazać ciągi CSV do tego polecenia cmdlet.

Dane wyjściowe

PSObject

To polecenie cmdlet zwraca obiekty opisane przez właściwości w ciągach CSV.

Uwagi

W formacie 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. Nie ma możliwości wyeksportowania metod obiektu.

ConvertFrom-Csv obsługuje również format dziennika rozszerzonego W3C. Wiersze rozpoczynające się od znaku skrótu (#) są traktowane jako komentarze i ignorowane, chyba że komentarz zaczyna się od #Fields: i zawiera rozdzielaną przecinkami listę 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.