Pagine

sabato 9 luglio 2011

Powershell - Creare un proprio oggetto PSObject

Questo post spiega come creare un proprio oggetto powershell, in questo modo potremo scegliere noi le proprietà che dovrà avere e sarà possibile utilizzare i dati con la comodità di un oggetto.

Ad esempio:

$nostrooggetto.Nome
$nostrooggetto.Cognome
ecc..




Nell'esempio viene caricato un file di testo contenente le informazioni sul Backup di un file server.

Ecco L'esempio

#Carico i Valori che voglio inserire all'interno del mio oggetto.

$RisultatoOSSV = get-content d:\BackupStatus.txt

#Creo un template per l'oggetto
$objTemplateObject = New-Object psobject
$objTemplateObject | Add-Member -MemberType NoteProperty -Name Server -Value $null
$objTemplateObject | Add-Member -MemberType NoteProperty -Name Disk -Value $null
$objTemplateObject | Add-Member -MemberType NoteProperty -Name Destination -Value $null
$objTemplateObject | Add-Member -MemberType NoteProperty -Name InTrasferimento -Value $null
$objTemplateObject | Add-Member -MemberType NoteProperty -Name Trasferiti -Value $null
$objTemplateObject | Add-Member -MemberType NoteProperty -Name Time -Value $null
$objTemplateObject | Add-Member -MemberType NoteProperty -Name LagTime -Value $null
$objTemplateObject | Add-Member -MemberType NoteProperty -Name Status -Value $null
$objTemplateObject | Add-Member -MemberType NoteProperty -Name Note -Value $null
$arrDati = @() #Array Di oggetti, qui verranno messi i nostri oggetti temporanei che comporranno il nostro oggetto.

#Ciclo ogni singola riga letta dal file di testo
$RisultatoOSSV | foreach{
                #Creo un oggetto basato sul template
                $objTemp = $objTemplateObject | Select-Object *
             
                <#
                   A questo punto potremmo elaborare la striga e settare le variabili dell'oggetto
                  Qui sotto il codice Stringhe per settare i parametri dell'oggetto
                 Non ho inserito il codice per tirar fuori dalla stringa il nome del server perchè non serve per
                l'esempio.
                #>

                $objTemp.server = $server
                $objTemp.Disk = $Disk
             
                #Aggiungere l'oggetto temporaneo ad arrDati, un array di oggetti
                $arrDati += $objTemp
}


A Questo punto è possibile utilizzare l'oggetto come se fosse un oggetto PS normalissimo

Quindi $arrDati[2].server conterrà il nome del server del terzo oggetto inserito nell'array.
Possiamo passare anche in pipeline l'oggetto

$arrDati | foreach{ $_.server}

Perchè crearsi un proprio oggetto?

In Powershell potremmo crearci delle funzionalità personali, ad esempio se volessimo sapere quanto spazio disco abbiamo libero sui nostri server, in che OU si trovano, da quanto sono accesi ecc.... potremmo crearci un cmdlet che restituisca un oggetto creato nel modo che abbiamo appena visto, contenente queste informazioni.

Prossimamente posterò come crearsi cmdlet scritti in powershell e come crearsi un modulo powershell  personale.

Nessun commento:

Posta un commento