Come amministratore di Unix e Windows che fa molti scripting Unix e quasi nessun scripting Windows, direi che è in parte dovuto all'incredibile imbarazzo delle utilità e delle API di scripting di Windows e alla difficoltà (forse la non ovvietà sarebbe una parola migliore) di eseguire le cose in remoto su un computer Windows.
Voglio dire, WTF è questo?
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Parte del problema, credo, è che ci sia un'API. Sotto Unix, gli amministratori stanno in gran parte scrivendo l'automazione delle utility da riga di comando che già usano. Sotto Windows, devi usare questa API che non ha familiarità a tutti i livelli. Ad esempio, cosa significa "impersonare"? Questo è un concetto banale per un amministratore Unix, che probabilmente utilizzerà sudo e su e avrà già familiarità con gli script setuid. Ma è improbabile che un amministratore di Windows abbia familiarità con tutto ciò; potrebbero conoscere "runas" (o l'opzione equivalente della GUI), ma hanno molte più probabilità di accedere come amministratore quando devono fare qualcosa di amministrativo.
E la documentazione sugli script in Windows è infelice. Per prima cosa, è molto più "linguaggio interpretato" rispetto allo script, sempre perché usano un'API (non familiare) e non comandi con cui hanno già familiarità. Ma non credo di aver mai trovato nulla di utile nella documentazione di Microsoft che non sia stato portato nel trovare qualcuno che stava già facendo qualcosa di simile a quello che volevo e che mi ha indicato nella giusta direzione. Da nessuna parte sembra esserci un elenco di cose che puoi fare. È come se tu avessi già familiarità con gli interni di Windows per fare le cose più elementari.
Non che gli script Unix spesso non assomiglino al rumore di linea. Ma un amministratore Unix può iniziare con uno script che non fa altro che eseguire semplici comandi che già conosce. ("Devo sempre eseguire questi tre comandi in successione. Se li metto insieme in un file, posso farlo in un solo comando!") E poi può progredire in seguito quando si sente a suo agio con la situazione. Al contrario, non c'è modo per un amministratore di eseguire lo script "accedi al server come amministratore; fai clic su Start → Impostazioni → Pannello di controllo; fai doppio clic su Sistema; fai clic sulla scheda Nome computer; ecc." Sì, qualunque cosa stesse cercando di arrivare è probabilmente presentata attraverso un'API da qualche parte, ma non c'è modo per lui di trovarla in modo incrementale.
Quindi, per rispondere alla domanda "come possiamo convincere gli amministratori di Windows a fare più script?", La risposta è rendere lo script meno alieno. Come farlo, non lo so.
Onestamente, la risposta è nelle mani di Microsoft. Non c'è motivo per cui non possano avere un'utilità da riga di comando per fare tutto ciò che viene fatto tramite la GUI. (In realtà ce ne sono molti là fuori ora, ma non sono pubblicizzati, sono scarsamente documentati e sono incoerenti.) Inoltre non c'è motivo per cui non ci possa essere alcun suggerimento nella GUI su cosa quel pulsante lo fa davvero. Avere una descrizione comandi che mostra l'oggetto API che viene modificato. Oppure documentalo nella finestra della Guida.
Non c'è alcun problema a proteggere gli utenti dagli interni, ma Windows sembra fare di tutto per nascondere attivamente quegli interni, anche da coloro che vogliono trovarli.
ls -1 *old* | awk '{print "mv "$1" "$1}' | sed s/old/new/2 | sh