Als Unix- und Windows-Administrator, der viel Unix-Scripting und fast kein Windows-Scripting ausführt, würde ich sagen, dass dies zum Teil auf die unglaubliche Unbeholfenheit der Windows-Scripting-Dienstprogramme und -APIs sowie auf die Schwierigkeit (möglicherweise nicht offensichtlich) zurückzuführen ist ein besseres Wort), Dinge remote auf einem Windows-Computer auszuführen.
Ich meine, WTF ist das?
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Ein Teil des Problems, glaube ich, ist , dass es ist eine API. Unter Unix schreiben Administratoren hauptsächlich die Automatisierung von Befehlszeilenprogrammen, die sie bereits verwenden. Unter Windows müssen Sie diese API verwenden, die auf allen Ebenen unbekannt ist. Was bedeutet zum Beispiel "Imitieren"? Dies ist ein triviales Konzept für einen Unix-Administrator, der wahrscheinlich sudo und su verwendet und bereits mit setuid-Skripten vertraut ist. Es ist jedoch unwahrscheinlich, dass ein Windows-Administrator damit vertraut ist. Sie kennen sich vielleicht mit "Runas" (oder der entsprechenden GUI-Option) aus, aber es ist weitaus wahrscheinlicher, dass sie sich als Administrator anmelden, wenn sie etwas administratives tun müssen.
Und die Dokumentation zur Skripterstellung in Windows ist miserabel. Zum einen ist es weitaus mehr "interpretierte Sprache" als Skript, da sie eine (unbekannte) API verwenden und keine Befehle, mit denen sie bereits vertraut sind. Aber ich glaube nicht, dass ich jemals in der Dokumentation von Microsoft etwas Sinnvolles gefunden habe, das nicht dadurch entstanden ist, dass ich jemanden gefunden habe, der bereits etwas in der Nähe meines Wunsches getan hat, was mich in die richtige Richtung gelenkt hat. Nirgendwo scheint es eine Liste von Dingen zu geben, die man tun kann. Es ist, als müsste man bereits mit Windows-Interna vertraut sein, um die grundlegendsten Dinge zu tun.
Nicht, dass Unix-Skripte nicht oft wie Zeilenrauschen aussehen. Ein Unix-Administrator kann jedoch mit einem Skript beginnen, das nur einfache Befehle ausführt, die er bereits kennt. ("Ich muss diese drei Befehle immer nacheinander ausführen. Wenn ich sie nur in einer Datei zusammenstelle, kann ich sie mit einem Befehl ausführen!") Und dann kann er später fortfahren, wenn er sich mit der Situation vertraut macht. Im Gegensatz dazu hat ein Administrator keine Möglichkeit, das Skript "Als Administrator am Server anmelden; auf Start → Einstellungen → Systemsteuerung klicken; auf System doppelklicken; auf die Registerkarte Computername klicken; usw." auszuführen. Ja, was auch immer er erreichen wollte, wird wahrscheinlich irgendwo über eine API präsentiert, aber es gibt keine Möglichkeit für ihn, dies schrittweise herauszufinden.
Um die Frage zu beantworten, wie wir Windows-Administratoren dazu bringen können, mehr Skripte zu erstellen, lautet die Antwort: Machen Sie Skripte weniger fremd. Wie das geht, weiß ich nicht.
Ehrlich gesagt liegt die Antwort in den Händen von Microsoft. Es gibt keinen Grund, warum sie kein Befehlszeilendienstprogramm haben können, um alles zu erledigen, was über die GUI erledigt wird. (Es gibt tatsächlich viele von ihnen, aber sie werden nicht beworben, sie sind schlecht dokumentiert und sie sind inkonsistent.) Es gibt auch keinen Grund, warum es in der GUI keinen Hinweis darauf geben könnte, was dieser Knopf tut es tatsächlich. Haben Sie eine QuickInfo, die das API-Objekt zeigt, das geändert wird. Oder dokumentieren Sie es im Hilfefenster.
Es ist kein Problem, Benutzer vor Interna zu schützen, aber Windows scheint sich Mühe zu geben, diese Interna aktiv zu verbergen, selbst vor denen, die sie finden möchten.
ls -1 *old* | awk '{print "mv "$1" "$1}' | sed s/old/new/2 | sh