A Ovest Di Paperino

Welcome to the dark side.

PowerShell: parliamone serenamente

Rubo il titolo ad un già citato post di Enrico, per parlare stavolta di PowerShell visto che è stata più volte citata nei commenti di questo blog.

Powershell Non sono un esperto di Command Line Interface (CLI o shell), non sono mai stato un sys-admin in vita mia, e perciò mi limiterò ad un paio di osservazioni di superficie.

Prima osservazione: le shell non dovrebbero essere intese come strumenti per l'utente finale.

Se a molti può sembrare ovvio, ad alcuni può sembrare una bestemmia. Credo che i nerd che abbiano imparato ad usare *nix nei vecchi laboratori dell'Università siano quelli che considerano la mia affermazione una bestemmia, abituati com'erano al solo accesso terminale. Nel lab di calcolo numerico dell'Università di Bari, nel 1992 circa, era l'unico modo di usare *nix: i pochi terminali "grafici" erano in grado solo di mostrare un'anteprima di plotting. Niente mouse, niente finestre, ma solo editor e shell testuali. Anche il DOS aveva una shell molto primitiva (Command.com) in grado di supportare loop e altre amenità, ma impallidiva a confronto delle possibilità offerte dalla Bash shell.

Seconda osservazione: le UI non dovrebbero essere intese come strumenti per l'amministrazione in larga scala

Il sys-admin non deve cliccare sulla check-box della UI di ogni singola macchina per fare il deploy di qualche policy. Qualcuno potrebbe pensare che un sistema come Windows basato prevalentemente su UI, avesse scarsissime capacità di shell scripting. Che il sys-admin Windows sia insomma costretto ad impossibili acrobazie grafiche. Niente di più scorretto, vista la combinazione di:

  • modalità Console alias Command Prompt (erede del vecchio command.com) in grado di interpretare file batch (.BAT) e command (.CMD) di bassa complessità
  • linguaggi di scripting come VBScript, disponibili in modalità Console tramite "plug-in" come Windows Scripting Host
  • layer di sistema apposito, Windows Management Instrumentation (WMI), che espone le funzionalità di alcuni componenti di sistema ai vari linguaggi di scripting
  • laddove non arriva WMI, occorre scrivere una applet Console nel proprio linguaggio di programmazione preferito (C/C++/Pascal/ecc.)

In parole povere, affermare che non si possa amministrare Windows via scripting in nessun modo, è perlomeno falso. Questo non vuol dire però la combinazione di cui sopra sia una soluzione ottimale o comparabile con altre shell tradizionali. Per colmare questa lacuna è stato rilasciato, il 30 Gennaio 2007, una nuova CLI chiamata appunto PowerShell. Power non per caso perché si integra completamente con il framework .Net. Inizialmente il piano era di rilasciare PowerShell integrandolo in Vista e come download separato per le altre piattaforme (XP e Win2k3), però motivi logistici hanno portato ad una soluzione diversa. Sarà però rilasciato come componente integrato, seppur opzionale, di Windows Server 2008.

Il numero di Maggio 2007 di Linux Magazine, dedica due pagine scritte con estrema chiarezza ad un confronto tra la Bash Shell e PowerShell. Riporto alcuni brani molto significativi:

New to the world of Windows is the way PowerShell regards everything as a filesystem and not only navigates the filesystem and drives, but the Registry, the certificate store, and environment variabels.
[...]
In PowerShell, all cmdlets  create defined objects as their output data instead of text-only output.
[...]
Although passing data objects is slightly more complex, this object orientation helps standardize operations and supports handling of complex data structures.
For example, Bash needs and external XML parser (like Saxon or Xalan-J) to parse XML files.
[...]
Bash is useful as a plain but straightforward tool for most daily tasks. If it comes to the need for advanced uses and complex data structures, you can branch out into object-oriented Python or the graphical capabilities of Tcl/Tk.

Conclusione:

PowerShell : Bash = Bash : WinConsole+VBScript+WMI

In poche parole non solo il gap è stato colmato, ma ne è stato creato uno più grosso nella direzione opposta: basti pensare alle possibilità offerte ed integrate in PowerShell, che in Bash richiedono tool esterni. Questa dicesi innovazione, parola di Linux Magazine, Maggio 2007.

-quack

P.S. è possibile rinominare 200 file già usando gli strumenti a disposizione con il Command Prompt senza neanche scomodare i vari linguaggi di scripting.

Technorati Tags: