mercoledì 3 agosto 2022

Powershell - Matrici Array

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