In powershell e' molto importante saper maneggiare matrici ed array. Un'altra cosa molto importante e' capire se si sta lavorando con degli oggetti o con dei valori. I primi sono dotati di proprieta che e' possibile interrogare e modificare. I secondi sono oggetti molto piu semplici. Lavorando con ImportExcel ho acquisito un intero foglio di lavoro in una singola variabile. A questo punto dovevo capire come maneggiarla.
Importare il conenuto del foglio VpnUsers in una variabile
$test = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers -ImportColumns @(1,2,3,4,5,6,7,8,9,10,11,12) -startrow 1 -endrow 15
$test2 = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers
Visualizzo il contenuto delle variabili. Sembrerebbero degli arrays (vedo un simbolo @)
write-host $test
write-host $test2
Verifico il tipo esatto di variabile
$test.gettype()
$test2.gettype()
$test.gettype() | fl
$test2.gettype() | fl
Verificare i tipi di elementi di una matrice
$test |get-member
Contare gli elementi dell'arrays
Se il risultato mi dice che ho 14 elementi, significa che l'array ha gli elementi da [0 a 13] valorizzati. L'elemento [14] non e' valorizzato
$test.count
Cosa contiene il primo elemento della matrice
$test[0]
Cosa contengono il primo ed il tredicesimo elemento
$test[0,12]
Ruotare i valori della matrice
Per utilizzare gli elementi, probabilmente dovro ruotarli, con un ciclo foreach o simile
$test = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers
$test | ForEach-Object {"Item: [$PSItem]"}
foreach ( $node in $test ) {
"Item: [$node]"
}
Matrici di oggetti
Matrici oggetti
Le matrici possono anche contenere degli oggetti, come elementi.
Esempio
$data = @(
[pscustomobject]@{FirstName='Kevin';LastName='Marquette'}
[pscustomobject]@{FirstName='John'; LastName='Doe'}
)
Esempio
$processList = Get-Process
La caratteristica principale degli oggetti e che essi hanno delle proprieta
ESEMPIO
$temp[0] - mi restituisce il contenuto del singolo elemento
$test[0].givenname - mi restisce il valore della colonna givenname per il primo record
Elencare il contenuto del campo Surname di tutti gli elementi dell'array
$test | ForEach-Object {$_.Surname}
In alcuni casi potrebbe essere necessario le proprieta estese
$test | Select-Object -ExpandProperty LastName
Filtrare il contenuto di un'array
Vengono restituiti tutti gli elementi con Marco nel givenname
$test | Where-Object {$_.givenname -eq 'Marco'}
$data | Where FirstName -eq Kevin
REFERENCE
https://docs.microsoft.com/it-it/powershell/scripting/learn/deep-dives/overview?view=powershell-7.2
https://docs.microsoft.com/it-it/powershell/scripting/learn/deep-dives/everything-about-arrays?view=powershell-7.2
Nessun commento:
Posta un commento