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
ls
. Drittens würde ich in Betracht ziehensed
undawk
relativ weit fortgeschritten sein, und zwar auf demselben Gebiet wie die Windows-APIs, über die ich spreche. Drittens, obwohl einige (viele) Unix-Scripting-Befehle komplex sind, müssen Sie dort nicht beginnen & mdash; Sie können einfache Dinge tun, beispielsweise eine Liste von Befehlen, mit denen Sie bereits vertraut sind & mdash; Wenn Sie dagegen mit Windows praktisch alles tun möchten, müssen Sie diese enorme Lernkurve zuerst skalieren. Aktualisierung der Antwort.Geben Sie ihnen eine Aufgabe, die wirklich nur über ein Skript erledigt werden kann - zum Beispiel musste ich einmal die Erstellung von Hunderten von Ordnern und benutzerdefinierten Berechtigungen für jeden Ordner per Skript ausführen und es musste TÄGLICH aktualisiert werden. Wenn sie dies manuell tun würden, wäre es ihre einzige Aufgabe. Das Skript, das unter anderem mit CACLS Berechtigungen basierend auf der Ausgabe einer begrenzten Textdatei zurücksetzte, brauchte ungefähr einen Tag, um zu perfektionieren (das Basisskript war in ungefähr einer Stunde fertig).
Wenn Sie anfangen zu sehen, was Sie mit Skripten anfangen können, kann dies ein enormer Gewinn sein.
quelle
Ich habe einmal einen Systemadministrator eingestellt, der sich völlig weigerte, irgendwelche 'Programmierungen' vorzunehmen. Ich habe versucht, ihm den Weg zu weisen, indem ich mit gutem Beispiel vorangehe. Das Beste, was ich aus ihm herausholen konnte, war, vorhandenen Code zu verwenden und die Variablenzuweisung oder die Hostnamen usw. zu ändern. einen Job erledigen. Einige Leute haben einfach keine Probleme mit der Programmierung, deshalb müssen Sie die Barriere für sie senken.
Microsoft arbeitet daran. In SQL Server ist es seit einiger Zeit möglich, in der Management Studio-Benutzeroberfläche auf Inhalte zu klicken und dann ein t-sql-Skript von dem auszugeben, was Sie gerade getan haben. Dies ist großartig, vor allem für die nicht so geneigten Windows-Sysadmin-Programmierung.
Ich habe festgestellt, dass der System Center Virtual Machine Manager über dieselbe Ansichtsskriptfunktion verfügt, mit der Ausnahme, dass ein Powershell-Skript ausgegeben wird. Ich denke, viele andere Produktlinien führen dies ebenfalls ein.
Wie motiviere ich Administratoren zum Schreiben von Skripten? harter anruf, ein guter admin ist ein fauler admin & das bedeutet ein admin, der so viel wie möglich schreibt. Ein Administrator, der die Zeit hat, auf Dinge zu klicken, ist nicht sehr produktiv! Überladen Sie Ihre Admins mit so viel Arbeit, dass sie keine andere Wahl haben, als Skripte zu schreiben.
quelle
Ich stimme Ihrem Beitrag voll und ganz zu. Leider gibt es meiner Meinung nach nicht viel, was ohne die Unterstützung des Managements und der Prozesse, die die Verwendung von Skripten erzwingen , getan werden kann . Wenn die Leute die Wahl haben, werden sie immer das tun, was ihnen vertraut ist und was einfach ist. Manchmal scheint dies ein negativer Punkt zu sein, aber manchmal sind Einfachheit und Vertrautheit von Vorteil.
Einerseits soll das Windows-System implizit einfach / leicht sein, während Unix- / Linux-Systeme viel schwieriger und weniger verzeihend sind. Wer kann die Admins beschuldigen, den Weg des geringsten Widerstands eingeschlagen zu haben? Während Sie, ich oder zahlreiche andere Leute die Macht des Skripts erkennen, werden die Leute irgendwann auf die eine oder andere Weise lernen. In der Regel lernen Administratoren, die sich mit Skripten auskennen, auf die harte Tour. Ich arbeite gerne schlauer, andere mögen vielleicht nur arbeiten.
Früher dachte ich , man die Leute motivieren können, aber die Realität ist , es sei denn , Sie sind verantwortlich für sie die Wahrscheinlichkeit einer erfolgreichen „Motivation“ extrem niedrig ist. Meine Einstellung in diesen Tagen ist: Wer lernen will, dem helfe ich. Seien Sie kein Verkäufer für ein Produkt, das niemand haben möchte, unabhängig davon, ob er es benötigt. Wenn Sie nur einer Person helfen / beibringen , die motiviert ist (aus welchem Grund auch immer), werden sie der Katalysator für Veränderungen sein. Nicht du. Nur meine zwei Cent.
quelle
Ein Mantra, nach dem ich gehe, lautet "Arbeite schlauer, nicht härter". Wenn Sie einen Vorgang mehr als ein paar Mal ausführen, können Sie ihn in der Regel mit einem Skript ausführen, um ihn automatisch mit einem Mausklick, einem Bash-Skript oder einer anderen Methode ausführen zu lassen. So wie ich das sehe, habe ich persönlich die Freiheit, wichtigere Aufgaben zu erledigen, die nicht so sehr die "manuelle Arbeit" der Systemadministration sind.
Diejenigen, die Skripte vermeiden möchten, haben möglicherweise mehrere Dinge im Kopf. Vielleicht gefällt ihnen die GUI-Oberfläche und sie möchten keine Kommandozeile oder Programmierung erlernen. Vielleicht denken sie, dass sie durch das Ausschreiben von Skripten ihre eigene Selbstbedeutung reduzieren. In beiden Fällen ist dies nicht die Art von Mitarbeiter, die ich gerne hätte, und die Zurückhaltung, Skripte zu schreiben, zeigt, um welche Art von Mitarbeiter es sich handelt. Ich hätte lieber einen Problemlöser als einen "blöden" Systemadministrator.
Was die Ermutigung und Motivation angeht, würde ich sagen, einfach so zu tun, wie Sie es taten, die Produktivitätsgewinne zu zeigen und zu zeigen, wie sie ihre Arbeit erleichtern können. Für einige ist es nur ein Gehaltsscheck, ein Windows-Systemadministrator zu sein, und es wird schwierig sein, sie zu motivieren, über die in den letzten 10 Jahren für sie geltende Point-and-Click-Mentalität hinauszugehen.
quelle
Es gibt ein paar Probleme, die Sie überwinden müssen. Sie haben eines erwähnt: Viele Administratoren möchten nicht in die Programmierung involviert sein, selbst wenn sie so niedrig sind wie die Skripterstellung. Der andere hängt damit zusammen, und das ist eine Frage der Kontrolle. Wenn ein Administrator eine Aufgabe manuell ausführt, weiß er genau, was in jeder Phase geschieht. Viele Administratoren haben möglicherweise das Gefühl, dass sie durch das Ersetzen durch ein Skript die Kontrolle über den Prozess verlieren, insbesondere wenn sie das Skript nicht verstehen und das Skript nicht geschrieben haben (und es nicht schreiben wollten).
Ich denke, dies ist bei Windows-Administratoren ein größeres Problem als bei Unix-Administratoren, da Skripterstellung seit langer Zeit ein wichtiger Bestandteil der Unix-Administration ist und im Allgemeinen von Anfang an von Unix-Administratoren gelernt wird. ness führt zu einem manuelleren Prozess, und das Erstellen von Skripten kann unnatürlich erscheinen.
Leider ist es ein harter Kampf, Entwickler über diesen Buckel zu bringen. Damit der Administrator weiterhin das Gefühl hat, die Kontrolle zu haben, muss er verstehen, was das Skript tut, und daher muss er das Skripting wirklich verstehen und lernen. Sie können ihn nur dazu bringen, dies zu tun, wenn sie es tun Verstehe wirklich, was Scripting mit ihnen anstellen kann
Es ist alles sehr gut zu sagen, dass es die Dinge schneller macht, das Leben leichter macht usw. Aber können Sie es ihnen beweisen? Finden Sie eine Aufgabe, die sie hassen, die sie regelmäßig erledigen müssen, und versuchen Sie, sie zu automatisieren. Wenn Sie diese schreckliche Aufgabe übernehmen und daraus ein Skript mit nur einem Klick machen können, werden sie Sie lieben, aber was noch wichtiger ist, sie sehen möglicherweise den Vorteil der Verwendung von Skripten.
quelle
[seufz] Dies ist in der Windows-Welt viel zu weit verbreitet, obwohl ich Ihre Aussage über die Mehrheit in Frage stellen würde, die nicht ponyen und lernen möchte, Skripte zu schreiben. Das absolut Beste, was ich je in meiner Sysadmin-Karriere gemacht habe, war, VB und Perl zu lernen, was zu VBS führte, was VIELE andere Dinge anführte.
Wenn es nicht funktioniert, sie nur zu zeigen, um sie zu motivieren, ist ein Trick, den ich gerne verwende, subtile Aussagen vor dem Management zu verwerfen. Zeigen Sie den Entscheidungsträgern die Vorteile, die sich häufig in der Gruppe ausbreiten. Aber sei kein Idiot.
In einer subtileren Hinsicht ist es schwierig (wenn nicht unmöglich), jemanden zu ändern. Mit gutem Beispiel vorangehen!
quelle
Diese Frage ist sehr subjektiv. Ich bin zwar mit der Effizienz und Kontrolle einverstanden, die das Scripting bietet, aber warum muss es ein Mandat sein? Warum müssen Sie die Leute dazu ermutigen, Skripte zu verwenden, nur weil Sie diese gerne verwenden? Warum lassen Sie die Leute nicht die Werkzeuge verwenden, die sie mögen und bevorzugen?
Diese Frage zeigt auch eine allgemeine Tendenz in der IT-Welt: Wenn ich kein Skript erstelle, muss ich nicht so schlau oder gut sein wie jemand, der Skripte erstellt, und das ist falsch. Ich habe viele Leute gekannt, die besser als ich Skripten können, aber sie konnten kein Subnetz erstellen, um ihr Leben zu retten oder herauszufinden, wie ein Netzwerk-Trace ausgeführt wird, oder SQL Server für die Verwendung von AWE konfigurieren, oder sie wussten nicht, was der Start ist. INI-Datei war für usw. usw.
quelle
Ehrlich gesagt kann man ein Pferd zum Wasser führen, aber man kann ihn nicht zum Trinken bringen.
Ich bin vor ungefähr 10 Jahren als SysAd im Marine Corps aufgetaucht, wo es eine große Lücke zwischen dem Admin-Status und dem Coder-Status gibt. Ein Coder zu sein bedeutet normalerweise, dass Sie nicht mehr mit der Pet-Projekt-Website des CO umgehen können (wenn Sie nur wenig von Ihrer eigentlichen Arbeit erledigen ...).
Aus diesem Grund habe ich mich geweigert, das Programmieren zu lernen, aber als ich mich dazu entschied, es auszuprobieren, hatte ich eine Menge Spaß.
Versuchen Sie es mit AD / LDAP-Skripten, um jemanden anzulocken. (Ich denke, es ist ein bisschen zugänglicher als WMI.) Weisen Sie eine Abfolge von Aufgaben zu, und sagen Sie "Geben Sie mir die Benutzernamen und E-Mail-Adressen der Menschen in der Gruppe XYZ ".
Ich habe diesen Code geschrieben, um alle Benutzer zu finden, die keiner der angegebenen Gruppen angehören: https://github.com/gwaldo/LDAP-Inverse-Group-Membership-Report
In Bezug auf Ressourcen sollten Sie sich die Microsoft Scripting Guys (mit hervorragenden Artikeln und Tutorials) und Scriptomatic2 ansehen, die ich zum Einarbeiten in WMI liebe.
quelle
Die nächste Frage: Warum sollten sie ein Skript schreiben? Das wird die Antwort bestimmen.
Vermutlich schreiben Sie ein Skript, weil es effizienter ist. In diesem Fall können Sie entweder alle anderen aufzeigen oder das Management darauf hinweisen, dass es effizientere Möglichkeiten gibt, die Systeme zu verwalten, und darauf warten, dass sie dies in einer Kostensenkungsmaßnahme nutzen.
Jemand mit Autorität kann Skripte schreiben, indem er verlangt, dass Skripte vorhanden sind, um die meisten Dinge zu erledigen. Wie gut dies funktionieren wird, hängt von mehreren Dingen ab; Wenn nur so angegeben, bleiben die Skripte wahrscheinlich völlig unangemessen und veraltet, während die Administratoren wie gewohnt arbeiten.
Es stellt sich auch die Frage, wie genau sich dies auf Sie auswirkt. Stört es Sie nur, oder wäre Ihr Leben besser, wenn Ihre Admins Skripte schreiben würden?
quelle
Ich hatte tatsächlich einen anderen Gedanken. In Bezug auf die Tatsache, dass Junior-Windows-Administratoren an GUI-Interaktionen gewöhnt sind, wäre es möglicherweise hilfreich, wenn Sie sie mit einer Skript-GUI-Interaktion wie AutoIt starten würden . Dies würde es ihnen ermöglichen, in Bezug auf Skripten Fuß zu fassen und gleichzeitig die Tools zu verwenden, die sie bereits kennen, anstatt ihre vorhandenen Tools zu verwerfen und sie gleichzeitig dazu zu bringen, neue Tools und Skripten zu erlernen.
Sobald sie sich mit der Idee des Skripts im Allgemeinen vertraut gemacht haben, können sie zu Skripts übergehen, die nicht über die GUI ausgeführt werden. Auch wenn dies nicht der Fall ist, kann die Automatisierung von Tastenklicks möglicherweise viel Zeit sparen.
quelle
Ich habe Skripte als "Dokumentation, die die Arbeit für Sie erledigt" definiert.
Manager: Verbringen Sie unzählige Stunden damit, Unterlagen zu erstellen, die ein Erstklässler verstehen kann und die bis zum Ende der Woche veraltet sein werden, damit Ihre Mitarbeiter mit einem Mausklick durch Task-X klicken können.
Angestellter: Ich habe ein Skript, das Task-X ausführt, könnte ich ihnen das einfach geben.
Manager: Sicher, nachdem Sie die gerade angeforderte Dokumentation beendet haben, dokumentieren Sie auch Ihr Skript mit einem Flussdiagramm.
quelle
Vergessen Sie nicht, dass sich die Dokumentation in einem MS Word-Dokument befinden sollte, um das Lesen vom Server zu erschweren.
quelle