Scopri come creare dei file CSV ben strutturati con l’aiuto di script PowerShell: usa PowerShell Custom Objects combinato con il commandlet Export-csv.
Introduzione agli oggetti personalizzati di PowerShell
Gli oggetti personalizzati sono oggetti “generici” che puoi creare tu stesso in PowerShell.
Un oggetto personalizzato ti permette di definire varie proprietà che possono essere aggiunte dinamicamente agli script PowerShell. Un oggetto personalizzato può avere delle proprietà predefinite come qualsiasi altro oggetto o puoi aggiungerle dinamicamente durante il runtime quando necessario.
Ci sono molti modi per usare gli oggetti personalizzati e trasformarli in strumenti utili. È possibile:
- mantenere una “variabile di stato” nei file di log o
- trasferire più messaggi contemporaneamente a una funzione senza usare troppe variabili.
Generare oggetti personalizzati PowerShell
Si crea un oggetto personalizzato PowerShell con il commandlet “New-Object”.
1
|
$object = New-Oggetto PSObject
|
In questo esempio, abbiamo creato un oggetto di tipo “PSCustomObject”.
Per ora l’oggetto iniziale è vuoto e non ha altre caratteristiche. Puoi aggiungere nuove caratteristiche usando il commandlet “Add-Member”.
1
|
$object | Add-Member NoteProperty “Color” “Red”
|
Come risultato, l’oggetto ha ora la caratteristica “Color=red”. Potete ripetere questa operazione tutte le volte che volete e dare all’oggetto caratteristiche diverse:
1
|
$object | Add-Member NoteProperty “Size” 1
|
Esportazione di oggetti personalizzati come CSV
Un grande vantaggio è che puoi trasferire l’intero oggetto ad altre funzioni o commandlets:
1
|
$object Export-Csv -NoTypeInformation -Path .\log.csv -Delimitatore ‘;’
|
O con una funzione:
1
2
3
4
5
|
funzione my-export {
param($myInput)
$myInput Export-Csv -NoTypeInformation -Path .\log.csv -Delimitatore ‘;’
}
my-export $object
|
Qui abbiamo creato un file .csv che assomiglia a questo:
Colore | Dimensione |
Rosso | 1 |
E di conseguenza, il testo appare così:
“Colore”; “Dimensione”
“Rosso”; “1″
Puoi anche combinare diversi oggetti in una lista o in un array per visualizzarli collettivamente:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$list = @()
$object1 = Nuovo-Oggetto PSObject
$object1 | Add-Member NoteProperty “Name” “Alice”
$object1 | Add-Member NoteProperty “Color” “Red”
$object1 | Add-Member NoteProperty “Size” 1
$list += $object1
$object2 = New-Object PSObject
$object2 | Add-Member NoteProperty “Name” “Bob”
$object2 | Add-Member NoteProperty “Color” “Blue”
$object2 | Add-Member NoteProperty “Size” 2
$list += $object2
$list | Export-Csv -NoTypeInformation -Path .\log.csv -Delimitatore ‘;’
|
Come risultato, il nuovo file .csv contiene automaticamente entrambi gli oggetti:
Nome | Colore | Dimensione |
Alice | Rosso | 1 |
Bob | Blu | 2 |
Secondo, il testo appare come:
“Nome”; “Colore”; “Dimensione”
“Alice”; “Rosso”; “1″
“Bob”; “Blu”; “2″
In sintesi, gli oggetti personalizzati PowerShell combinati con la commandlet Export-csv sono uno strumento efficace e utile per esportare serie di dati in file .csv.
FirstAttribute AG – Microsoft Consulting Partner per
Migrazione e Active Directory
Consulenza AD | AD Migration