Il capitolo 10 fa notare come IronPython possa essere usato nelle attività di amministrazione di Windows giornalmente.
I post precedenti sono: WPF, protocolli e metaprogrammazione, testing, proprietà, dialog e Visual Studio, first class functions e xml, applicazioni e design pattern, oggetti .NET e IronPython, introduzione a Python, introduzione al libro e il preambolo.
L’autore si butta nell’interfacciamento a WMI e PowerShell. Personalmente non immaginavo nemmeno che si potesse integrare PowerShell dentro IronPython e viceversa. Stellare :-)
La forza di Python nell’amministrazione di sistema sta nella versatilità, nella possibilità di usare il paradigma che si preferisce e nel fatto di avere tutta la ricchissima libreria a disposizione anche per i semplici script. È usato giornalmente per interfacciarsi agli ambienti Unix, a Win32 e per qualsiasi tipo di automazione nel sistema operativo.
Python ha un sacco di moduli per l’amministrazione di sistema: os
per la gestione del sistema operativo (compresa la gestione di processi), os.path
per i path, sys
per le informazioni del sistema e gli standard input, output ed error, stat
per gestire gli attributi dei file, shutil
per operazioni di copy, move e delete ad alto livello e altri ancora.
Per mostrare tutto ciò l’autore crea un sottoinsieme dell’utility find di Unix (utilissa se volete trovare dei file in un albero di directory). Questo gli permette di dimostrare il parsing della linea di comando, la lettura di file INI, la navigazione delle directory ricorsivamente (usando generatori) e il pattern matching sui nomi dei file.
Un’altra tecnologia utilissima è WMI per ricavare informazioni dal sistema operativo sui processi, sulle macchine, sulla rete ecc. ecc. Usando System.Management
e WQL si possono fare cose davvero interessanti ;-)
Il capitolo si conclude con una serie di esempi davvero esoterici dove si mostrano le interazioni tra PowerShell e IronPython in entrambi i sensi. Addirittura si possono usare i blocchi di PowerShell come event handler da IronPython!!
Ah, IronPython, ovviamente, può interagire anche con COM.