ConvertFrom-Csv
Converte le proprietà dell'oggetto in formato CSV (Character-Separated Value) in versioni CSV degli oggetti originali.
Sintassi
ConvertFrom-Csv
[[-Delimiter] <Char>]
[-InputObject] <PSObject[]>
[-Header <String[]>]
[<CommonParameters>]
ConvertFrom-Csv
-UseCulture
[-InputObject] <PSObject[]>
[-Header <String[]>]
[<CommonParameters>]
Descrizione
Il cmdlet ConvertFrom-Csv
converte i dati con valori delimitati da caratteri (CSV) in oggetti di tipo PSObject per ogni riga di dati CSV. I nuovi oggetti vengono scritti nella pipeline nell'ordine in cui vengono letti dai dati CSV. I valori nella riga dell'intestazione di colonna del file CSV diventano i nomi delle proprietà aggiunte a ogni nuovo PSObject.
Gli oggetti creati ConvertFrom-Csv
vengono oggetto tipo PSObject per ogni riga nel file CSV. I valori delle proprietà degli oggetti CSV sono versioni stringa dei valori delle proprietà degli oggetti originali. Le versioni CSV degli oggetti non hanno metodi.
È anche possibile usare i cmdlet Export-Csv
e Import-Csv
per convertire gli oggetti in stringhe CSV in un file e indietro. Questi cmdlet sono gli stessi dei cmdlet ConvertTo-Csv
e ConvertFrom-Csv
, ad eccezione del fatto che salvano le stringhe CSV in un file.
Il tipo PSObject mantiene l'ordine delle proprietà nell'ordine delle intestazioni di colonna. Ciò significa che si ottiene lo stesso ordine di colonna quando si convertono nuovamente gli oggetti in formato CSV.
Esempio
Esempio 1: Convertire i processi nel computer locale in formato CSV
In questo esempio viene illustrato come convertire i processi nel computer locale in formato CSV e quindi ripristinarli in formato oggetto.
$P = Get-Process | ConvertTo-Csv
$P | ConvertFrom-Csv
Il cmdlet Get-Process
invia i processi nella pipeline a ConvertTo-Csv
. Il cmdlet ConvertTo-Csv
converte gli oggetti processo in una serie di stringhe CSV. Il cmdlet ConvertFrom-Csv
converte le stringhe CSV in versioni CSV degli oggetti processo originali.
Le stringhe CSV vengono salvate nella variabile $P
.
Esempio 2: Convertire un oggetto dati in formato CSV e quindi in formato oggetto CSV
Questo esempio illustra come convertire un oggetto dati in formato CSV e quindi in formato oggetto CSV.
$Date = Get-Date | ConvertTo-Csv -Delimiter ';'
ConvertFrom-Csv -InputObject $Date -Delimiter ';'
Il primo comando usa Get-Date
per inviare la data corrente e l'ora inattiva della pipeline a ConvertTo-Csv
. Il cmdlet ConvertTo-Csv
converte l'oggetto date in una serie di stringhe CSV. Il parametro delimitatore viene usato per specificare un delimitatore punto e virgola. Le stringhe vengono salvate nella variabile $Date
.
Esempio 3: Usare il parametro di intestazione per modificare i nomi delle proprietà
In questo esempio viene illustrato come utilizzare il parametro Header di ConvertFrom-Csv
per modificare i nomi delle proprietà nell'oggetto importato risultante.
$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]
Il cmdlet Start-Job
avvia un processo in background che esegue Get-Process
. Un oggetto processo viene inviato alla pipeline per ConvertTo-Csv
e convertito in una stringa CSV. Il parametro NoTypeInformation rimuove l'intestazione delle informazioni sul tipo dall'output CSV ed è facoltativo in PowerShell v6 e versioni successive. La variabile $Header
contiene un'intestazione personalizzata che sostituisce i valori predefiniti seguenti: HasMoreData, JobStateInfo, PSBeginTime, PSEndTimee PSJobTypeName. La variabile $J
contiene la stringa CSV e viene usata per rimuovere l'intestazione predefinita. Il cmdlet ConvertFrom-Csv
converte la stringa CSV in un PSCustomObject e usa il parametro header per applicare la variabile $Header
.
Esempio 4: Convertire stringhe CSV di oggetti servizio
In questo esempio viene illustrato come usare il cmdlet ConvertFrom-Csv
con il parametro UseCulture.
(Get-Culture).TextInfo.ListSeparator
$Services = (Get-Service | ConvertTo-Csv)
ConvertFrom-Csv -InputObject $Services -UseCulture
Il cmdlet Get-Culture
usa le proprietà annidate TextInfo e ListSeparator per ottenere il separatore di elenco predefinito delle impostazioni cultura correnti. Il cmdlet Get-Service
invia oggetti servizio nella pipeline a ConvertTo-Csv
. Il ConvertTo-Csv
converte gli oggetti servizio in una serie di stringhe CSV. Le stringhe CSV vengono archiviate nella variabile $Services
. Il cmdlet ConvertFrom-Csv
usa il parametro InputObject e converte le stringhe CSV dalla variabile $Services
. Il parametro UseCulture usa il separatore di elenco predefinito delle impostazioni cultura correnti.
Quando si usa il parametro UseCulture, assicurarsi che il separatore di elenco predefinito delle impostazioni cultura correnti corrisponda al delimitatore usato nelle stringhe CSV. In caso contrario, ConvertFrom-Csv
non può generare oggetti dalle stringhe CSV.
Parametri
-Delimiter
Specifica il delimitatore che separa i valori delle proprietà nelle stringhe CSV. Il valore predefinito è una virgola (,
). Immettere un carattere, ad esempio due punti (:
). Per specificare un punto e virgola (;
) racchiuderlo tra virgolette singole.
Se si specifica un carattere diverso dal delimitatore di stringa effettivo nel file, ConvertFrom-Csv
non è possibile creare gli oggetti dalle stringhe CSV e restituisce le stringhe CSV.
Tipo: | Char |
Posizione: | 1 |
Valore predefinito: | comma (,) |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Header
Specifica una riga di intestazione di colonna alternativa per la stringa importata. L'intestazione di colonna determina i nomi delle proprietà degli oggetti creati da ConvertFrom-Csv
.
Immettere le intestazioni di colonna come elenco delimitato da caratteri. non racchiudere la stringa di intestazione tra virgolette. Racchiudere ogni intestazione di colonna tra virgolette singole.
Se si immettono meno intestazioni di colonna rispetto alle colonne di dati, le colonne di dati rimanenti vengono eliminate. Se si immettono più intestazioni di colonna rispetto alle colonne di dati, le intestazioni di colonna aggiuntive vengono create con colonne di dati vuote.
Quando si usa il parametro Header, omettere la stringa di intestazione di colonna dalle stringhe CSV. In caso contrario, questo cmdlet crea un oggetto aggiuntivo dagli elementi nella riga di intestazione.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-InputObject
Specifica le stringhe CSV da convertire in oggetti. Immettere una variabile contenente le stringhe CSV o digitare un comando o un'espressione che ottiene le stringhe CSV. È anche possibile inviare tramite pipe le stringhe CSV a ConvertFrom-Csv
.
Tipo: | PSObject[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-UseCulture
Usa il separatore di elenco per le impostazioni cultura correnti come delimitatore di elemento. Per trovare il separatore di elenco per le impostazioni cultura, usare il comando seguente: (Get-Culture).TextInfo.ListSeparator
.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe stringhe CSV a questo cmdlet.
Output
Questo cmdlet restituisce gli oggetti descritti dalle proprietà nelle stringhe CSV.
Note
In formato CSV, ogni oggetto è rappresentato da un elenco delimitato da caratteri dei valori delle proprietà dell'oggetto. I valori delle proprietà vengono convertiti in stringhe utilizzando il metodo ToString()
dell'oggetto . Non è possibile esportare i metodi dell'oggetto.