PowerShell è completamente orientato agli oggetti. Confrontato con le altre shell, però, tratta l’output di ciascun commando non come un testo ma come un oggetto (questo concetto verrà approfondito nel prosieguo). E, ancora, alla stregua delle altre shell, PowerShell utilizza la pipeline, che consente di passare il risultato di un comando al successivo. La sola differenza è che i valori di input e quelli di output sono oggetti anziché testo.
Gli oggetti di PowerShell non sono molto differenti da quelli impiegati nei programmi sviluppati in C++ o in C#: è possibile immaginare un oggetto come un’unità contenente dati, con attributi e metodi. Questi ultimi corrispondono alle azioni che possono essere eseguire sull’oggetto.
Se, ad esempio, richiamate un servizio in Windows PowerShell, state in realtà utilizzando l’oggetto che lo rappresenta; e se visualizzate informazioni su di un elemento di quel tipo, state visualizzando gli attributi del relativo oggetto. E se avviate un servizio, impostandone l’attributo Status pari a Started, state usando un metodo dell’oggetto relativo al servizio. A mano a mano che aumenterà la vostra esperienza, capirete meglio i vantaggi dell’impiego degli oggetti e potrete sfruttarne le potenzialità.
La tecnologia orientata agli oggetti di PowerShell rende ormai superati i parser delle comuni shell per Linux, così come le informazioni basate su testo, che tali comandi forniscono e accettano. Per rendere le cose più chiare forniremo un esempio concreto.
Supponete di voler recuperare la lista di tutti i processi del vostro sistema a cui sono associati più di 100 handle; con una tradizionale shell Linux probabilmente richiamereste il commando per visualizzare i processi (ps -A). Il commando ritorna una lista di testo, dove ogni linea contiene informazioni su di un processo, separate da spazi. Dovreste effettuare prima il parsing di queste righe utilizzando un tool, recuperare l’identificativo dei processi e richiedere poi, con un altro programma, il numero di handle per ciascun processo. Dovreste, in seguito, portare a termine il parsing di quest’altro risultato testuale, recuperare le linee di interesse e, infine, visualizzare gli elementi che stiamo cercando.
A seconda di quanto bene funziona il meccanismo di recupero e il filtro delle informazioni dalle liste di testo, questo approccio è più o meno affidabile. Ma se, per esempio, il titolo di una colonna nell’output testuale dovesse cambiare o il nome di un processo fosse troppo lungo andreste probabilmente incontro a qualche problema.