Converte le proprietà degli oggetti in un file CSV nelle versioni CSV degli oggetti originali.

Sintassi

Import-CSV [[-Delimiter] <char>] [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]

Import-CSV -UseCulture [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]

Descrizione

Il cmdlet Import-CSV consente di creare oggetti da file CSV di lunghezza variabile generati dal cmdlet Export-CSV.

È possibile utilizzare i parametri del cmdlet Import-CSV per specificare la riga dell'intestazione di colonna che determina i nomi delle proprietà degli oggetti risultanti, per specificare il delimitatore dell'elemento o indicare a Import-CSV di utilizzare il separatore di elenco per l'impostazione cultura corrente come delimitatore dell'elemento.

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

È inoltre possibile utilizzare i cmdlet ConvertTo-CSV e ConvertFrom-CSV per convertire oggetti in stringhe CSV (e viceversa). Questi cmdlet corrispondono ai cmdlet Export-CSV e Import-CSV, con l'eccezione che non salvano le stringhe CSV in un file.

Parametri

-Delimiter <char>

Specifica il delimitatore che separa i valori delle proprietà nel file CSV. Il valore predefinito è la virgola (,). Immettere un carattere, ad esempio i due punti (:). Per specificare il punto e virgola (;), è necessario racchiuderlo tra virgolette doppie.

Se si specifica un carattere diverso dall'effettivo delimitatore di stringa nel file, non è possibile creare oggetti dalle stringhe CSV mediante Import-CSV. Vengono invece restituite le stringhe.

Obbligatorio?

false

Posizione?

2

Valore predefinito

,

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Header <string[]>

Specifica una riga dell'intestazione di colonna alternativa per il file importato. L'intestazione di colonna determina i nomi delle proprietà dell'oggetto creato da Import-CSV.

Immettere un elenco di intestazioni di colonna separate da virgole. Racchiudere ogni elemento tra virgolette (singole o doppie). Non racchiudere la stringa dell'intestazione tra virgolette. Se si immette un numero di intestazioni di colonna inferiore a quello delle colonne, le colonne rimanenti non avranno alcuna intestazione. Se si immette un numero di intestazioni superiore a quello delle colonne, le intestazioni in più verranno ignorate.

Quando si utilizza il parametro Header, eliminare la riga dell'intestazione originale dal file CSV. In caso contrario, Import-CSV crea un oggetto in più dagli elementi nella riga dell'intestazione.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Path <string[]>

Specifica il percorso del file CSV da importare. È inoltre possibile reindirizzare un percorso a Import-CSV.

Obbligatorio?

true

Posizione?

1

Valore predefinito

nessuno

Accettare input da pipeline?

true (ByValue, ByPropertyName)

Accettare caratteri jolly?

false

-UseCulture

Utilizzare il separatore di elenco per l'impostazione cultura corrente come delimitatore dell'elemento. Il valore predefinito è la virgola (,).

Per trovare il separatore di elenco di un'impostazione cultura, utilizzare il comando (Get-Culture).TextInfo.ListSeparator. Se si specifica un carattere diverso dal delimitatore utilizzato nelle stringhe CSV, non è possibile creare oggetti dalle stringhe CSV mediante ConvertFrom-CSV. Vengono invece restituite le stringhe.

Obbligatorio?

true

Posizione?

named

Valore predefinito

Comma

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.String

È possibile reindirizzare una stringa che contiene un percorso a Import-CSV.

Output

Object.

Import-CSV restituisce gli oggetti descritti dal contenuto del file CSV.

Note

Poiché gli oggetti importati sono versioni CSV del tipo di oggetto, non vengono riconosciuti e formattati dalle voci di formattazione dei tipi di Windows PowerShell mediante cui vengono formattate le versioni non CSV del tipo di oggetto.

Nel file CSV, ogni oggetto viene rappresentato da un elenco di valori delle proprietà dell'oggetto separati da virgole. I valori delle proprietà vengono convertiti in stringhe (tramite il metodo ToString() dell'oggetto), pertanto sono in genere rappresentati dal nome del valore della proprietà. Export-CSV non esporta i metodi dell'oggetto.

Esempio 1

C:\PS>get-process | export-csv processes.csv

C:\PS> $p = import-CSV processes.csv

C:\PS> $p | get-member

   TypeName: CSV:System.Diagnostics.Process

Name                       MemberType   Definition
----                       ----------   ----------
Equals                     Method       System.Boolean Equals(Object obj)
GetHashCode                Method       System.Int32 GetHashCode()
GetType                    Method       System.Type GetType()
ToString                   Method       System.String ToString()
BasePriority               NoteProperty System.String BasePriority=8
Company                    NoteProperty System.String Company=Microsoft Corporation
...

C:\PS> $p | out-gridview

Descrizione
-----------
In questo esempio viene illustrato come esportare e importare un file CSV di oggetti Microsoft .NET Framework.

Nel primo comando viene utilizzato il cmdlet Get-Process per ottenere il processo nel computer locale. Viene utilizzato un operatore pipeline (|) per inviare gli oggetti processo al cmdlet Export-CSV che li esporta nel file Processes.csv nella directory corrente. 

Nel secondo comando viene utilizzato il cmdlet Import-CSV per importare i processi nel file Import-CSV. Gli oggetti processo risultanti vengono quindi salvati nella variabile $p.

Nel terzo comando viene utilizzato un operatore pipeline per reindirizzare gli oggetti importati ai cmdlet Get-Member. Il risultato mostra che si tratta di oggetti CSV:System.Diagnostic.Process, non degli oggetti System.Diagnostic.Process restituiti da Get-Process.

Inoltre, poiché non vi è alcun tipo di voce nei file di formattazione per la versione CSV degli oggetti processo, questi oggetti non vengono formattati come gli oggetti processo standard. 

Per visualizzare gli oggetti, utilizzare i cmdlet di formattazione, ad esempio Format-Table e Format-List o reindirizzare gli oggetti a Out-GridView.






Esempio 2

C:\PS>get-process | export-csv processes.csv -Delimiter :

C:\PS> $p = import-csv processes.csv -Delimiter :

Descrizione
-----------
In questo esempio viene illustrato come utilizzare il parametro Delimiter di Import-CSV. I processi vengono esportati in un file che utilizza i due punti (:) come delimitatore.

Durante l'importazione, il file Import-CSV utilizza il parametro Delimiter per indicare il delimitatore utilizzato nel file.






Esempio 3

C:\PS>$p = import-csv processes.csv -UseCulture

C:\PS> (get-culture).textinfo.listseparator

,

Descrizione
-----------
In questo esempio viene illustrato come utilizzare il parametro UseCulture di Import-CSV.

Con il primo comando vengono importati gli oggetti nel file Processes.csv nella variabile $p. Viene utilizzato il parametro UseCulture per indicare a Import-CSV di utilizzare il separatore di elenco definito per le impostazioni cultura correnti.

Con il secondo comando viene visualizzato il separatore di elenco per le impostazioni cultura correnti. Viene utilizzato il cmdlet Get-Culture per ottenere le impostazioni cultura correnti. Viene utilizzato il metodo con punto (.) per ottenere la proprietà TextInfo delle impostazioni cultura correnti e la proprietà ListSeparator dell'oggetto in TextInfo. In questo esempio, il comando restituisce una virgola.






Esempio 4

C:\PS>start-job -scriptblock { get-process } | export-csv jobs.csv

C:\PS> $header = "MoreData","StatusMessage","Location","Command","State","Finished","InstanceId","SessionId","Name","ChildJobs","Output","Error","Progress","Verbose","Debug","Warning","StateChanged"

# Delete header from file
C:\PS> $a = (get-content jobs.csv)
C:\PS> $a = $a[0], $a[2..($a.count - 1)]
C:\PS> $a > jobs.csv

C:\PS> $j = import-csv jobs.csv -header $header

C:\PS> $j

MoreData      : True
StatusMessage :
Location      : localhost
Command       : get-process
State         : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : 135bdd25-40d6-4a20-bd68-05282a59abd6
SessionId     : 1
Name          : Job1
ChildJobs     : System.Collections.Generic.List`1[System.Management.Automation.Job]
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.String]
Debug         : System.Management.Automation.PSDataCollection`1[System.String]
Warning       : System.Management.Automation.PSDataCollection`1[System.String]
StateChanged  :

Descrizione
-----------
In questo esempio viene illustrato come utilizzare il parametro Header di Import-CSV per modificare i nomi delle proprietà nell'oggetto importato risultante.

Nel primo comando viene utilizzato il cmdlet Start-Job per avviare un processo in background che esegue un comando Get-Process nel computer locale. Un operatore pipeline (|) invia l'oggetto processo risultante al cmdlet Export-CSV che converte l'oggetto processo nel formato CSV. Un operatore di assegnazione (=) consente di salvare il CSV risultante nel file Jobs.csv.

Nel secondo comando un'intestazione viene salvata nella variabile $header. A differenza dell'intestazione predefinita, questa intestazione utilizza "MoreData" anziché "HasMoreData" e "State" anziché "JobStateInfo".

Con i tre comandi successivi viene eliminata l'intestazione originale (seconda riga) dal file Jobs.csv.  

Nel sesto comando viene utilizzato il cmdlet Import-CSV per importare il file Jobs.csv e convertire le stringhe CSV in una versione CSV dell'oggetto processo. Nel comando viene utilizzato il parametro Header per inviare l'intestazione alternativa. I risultati verranno archiviati nella variabile $j. 

Nel settimo comando viene visualizzato l'oggetto nella variabile $j. L'oggetto risultante dispone delle proprietà "MoreData" e "State", come visualizzato nell'output dei comandi.






Esempio 5

C:\PS>".\processes.csv" | import-csv

Descrizione
-----------
Con questo comando vengono importati gli oggetti dal file Processes.csv.






Vedere anche




Argomenti della Guida