En tant qu'administrateur Unix et Windows qui fait beaucoup de scripts Unix et presque aucun script Windows, je dirais que cela est en partie dû à l'incroyable maladresse des utilitaires de script et des API Windows, et à la difficulté (peut-être que la non-évidence serait un meilleur mot) d'exécuter des choses à distance sur une machine Windows.
Je veux dire, WTF est-ce?
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Une partie du problème, je pense, est qu'il y est une API. Sous Unix, les administrateurs écrivent en grande partie l'automatisation des utilitaires de ligne de commande qu'ils utilisent déjà. Sous Windows, vous devez utiliser cette API qui n'est pas familière à tous les niveaux. Par exemple, que signifie «imiter»? C'est un concept trivial pour un administrateur Unix, qui est susceptible d'utiliser sudo et su et déjà familier avec les scripts setuid. Mais il est peu probable qu'un administrateur Windows connaisse tout cela; ils connaissent peut-être les «runas» (ou l'option GUI équivalente), mais ils sont beaucoup plus susceptibles de se connecter en tant qu'administrateur lorsqu'ils ont besoin de faire quelque chose d'administrateur.
Et la documentation sur les scripts dans Windows est misérable. D'une part, c'est bien plus un «langage interprété» qu'un script, encore une fois parce qu'ils utilisent une API (peu familière) et non des commandes qu'ils connaissent déjà. Mais je ne pense pas avoir trouvé quoi que ce soit d'utile dans la documentation de Microsoft qui n'ait pas été conduit à trouver quelqu'un qui faisait déjà quelque chose de proche de ce que je voulais qui m'indiquait dans la bonne direction. Nulle part il ne semble y avoir de liste de choses que vous pouvez faire. C'est comme si vous deviez déjà vous familiariser avec les composants internes de Windows pour faire les choses les plus élémentaires.
Pas que les scripts Unix ne ressemblent pas souvent à du bruit de ligne. Mais un administrateur Unix peut commencer avec un script qui ne fait rien d'autre que d'exécuter des commandes simples qu'il connaît déjà. ("Je dois toujours exécuter ces trois commandes successivement. Si je les rassemble dans un fichier, je peux le faire en une seule commande!") Et puis il pourra plus tard progresser à mesure qu'il se familiarisera avec la situation. En revanche, il n'y a aucun moyen pour un administrateur de script "se connecter au serveur en tant qu'administrateur; cliquez sur Démarrer → Paramètres → Panneau de configuration; double-cliquez sur Système; cliquez sur l'onglet Nom de l'ordinateur, etc." Oui, tout ce qu'il essayait d'obtenir est probablement présenté quelque part via une API, mais il n'a aucun moyen de le trouver progressivement.
Donc, pour répondre à la question "comment pouvons-nous amener les administrateurs Windows à faire plus de scripts?", La réponse est, rendre les scripts moins étrangers. Comment faire ça, je ne sais pas.
Honnêtement, la réponse est entre les mains de Microsoft. Il n'y a aucune raison qu'ils ne puissent pas avoir d'utilitaire de ligne de commande pour faire tout ce qui se fait via l'interface graphique. (Il y en a beaucoup en ce moment, mais ils ne sont pas annoncés, ils sont mal documentés et ils sont incohérents.) Il n'y a également aucune raison qu'il ne puisse y avoir aucune indication dans l'interface graphique sur ce bouton fait réellement. Avoir une info-bulle qui montre l'objet API qui est en cours de modification. Ou documentez-le dans la fenêtre d'aide.
Il n'y a aucun problème à protéger les utilisateurs des internes, mais Windows semble faire tout son possible pour cacher activement ces internes, même à ceux qui veulent les trouver.
ls -1 *old* | awk '{print "mv "$1" "$1}' | sed s/old/new/2 | sh