Condividi tramite


ConvertFrom-Csv

Converte le proprietà degli oggetti in formato CSV (valori delimitati da virgole) in versioni CSV degli oggetti originali.

Sintassi

Delimiter (Impostazione predefinita)

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

UseCulture

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

Descrizione

Il ConvertFrom-Csv cmdlet crea oggetti da stringhe CSV a lunghezza variabile generate dal ConvertTo-Csv cmdlet.

È possibile utilizzare i parametri di questo cmdlet per specificare la riga di intestazione della colonna, che determina i nomi delle proprietà degli oggetti risultanti, per specificare il delimitatore di elementi o per indicare a questo cmdlet di utilizzare il separatore di elenco per le impostazioni cultura correnti come delimitatore.

Gli oggetti creati ConvertFrom-Csv sono versioni CSV degli oggetti originali. I valori delle proprietà degli oggetti CSV sono versioni stringa dei valori delle proprietà degli oggetti originali. Le versioni CSV degli oggetti non dispongono di alcun metodo.

È anche possibile usare i Export-Csv cmdlet e Import-Csv per convertire gli oggetti in stringhe CSV in un file (e viceversa). Questi cmdlet sono gli stessi dei cmdlet ConvertTo-Csv e ConvertFrom-Csv, ad eccezione del fatto che salvano le stringhe CSV in un file.

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 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 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 della cultura corrente. 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 della cultura corrente.

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 è possibile 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 (;) racchiudilo 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 verranno restituite le stringhe CSV.

Proprietà dei parametri

Tipo:Char
Valore predefinito:comma (,)
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

Delimiter
Posizione:1
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Header

Specifica una riga di intestazione di colonna alternativa per la stringa importata. I nomi delle proprietà degli oggetti creati da ConvertFrom-Csvsono stabiliti dall'intestazione di colonna.

Immettere le intestazioni di colonna come elenco separato da virgole. 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.

Proprietà dei parametri

Tipo:

String[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti: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.

Proprietà dei parametri

Tipo:

PSObject[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:0
Obbligatorio:True
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

-UseCulture

Usa il separatore di elenco per la cultura attuale come delimitatore degli elementi. Per trovare il separatore di elenco per una cultura, usare il comando seguente: (Get-Culture).TextInfo.ListSeparator.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

UseCulture
Posizione:Named
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

Input

String

È possibile inviare tramite pipe stringhe CSV a questo cmdlet.

Output

PSObject

Questo cmdlet restituisce gli oggetti descritti dalle proprietà nelle stringhe CSV.

Note

Poiché gli oggetti importati sono versioni CSV del tipo di oggetto, non vengono riconosciuti e formattati dalle voci di formattazione del tipo di PowerShell che formattano le versioni non CSV del tipo di oggetto.

In formato CSV, ogni oggetto è rappresentato da un elenco separato da virgole dei valori delle proprietà dell'oggetto. I valori delle proprietà vengono convertiti in stringhe (utilizzando il metodo ToString() dell'oggetto), quindi sono rappresentati dal nome del valore della proprietà. Questo cmdlet non esporta i metodi dell'oggetto.