Ich lese überall, dass PowerShell der Weg der Zukunft ist. Als es zum ersten Mal veröffentlicht wurde, habe ich eine ganze Reihe von virtuellen Labors durchgeführt, aber seitdem habe ich es noch nicht in einer Produktionsumgebung verwendet. Ich weiß, dass der Tag kommen wird, an dem ich mich mit Betriebssystemen befasse, auf denen sie bereits installiert sind, also möchte ich bereit sein.
Ich möchte wissen:
- Benutzt du es?
- Was war Ihr "Bootstrapping" -Prozess für die Verwendung von PowerShell?
- Welche Art von Systemadministrationsaufgaben haben Sie damit geschrieben?
- Ich bin ein SQL Server-Datenbankadministrator. Was sind einige coole Dinge, die damit zu tun haben?
Anscheinend sind sich alle einig, dass Microsoft dies stark vorantreibt, aber niemand nutzt es tatsächlich. Ich möchte von Systemadministratoren hören, die es verwenden, um alltägliche Aufgaben zu erledigen und einige Codebeispiele auszutauschen.
windows
windows-server-2008
windows-server-2003
sql-server
powershell
Nick Kavadias
quelle
quelle
Antworten:
Microsoft unternimmt alles, um PowerShell zur ersten Wahl für Power-User und Automatisierungsautoren zu machen. Die Zeiten, in denen Code in .NET kompiliert wurde, um dasselbe zu tun, sind vorbei. Jetzt benötigen Sie nur noch notepad.exe und google. Wir sind große Fans davon im Büro, zumal die Exchange 2007-Verwaltungskonsole NICHT alles enthält, was Sie in PowerShell tun können. Microsoft hat es absichtlich versäumt, Dinge zu implementieren, die nur von Zeit zu Zeit erledigt werden und die einfacher zu entwickeln sind. Dies erzwingt geradezu die Verwendung, wenn Sie etwas haben, das einer komplexen Umgebung ähnelt.
Das Verwalten der neueren Produktgeneration von Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) verfügt über umfangreiche PowerShell-Hooks. Sobald Remote Powershell (PowerShell 2.0 IIRC) mit Server 2008 R2 bereitgestellt wird, wird es für Automatisierungsautoren noch nützlicher.
Was wir damit gemacht haben:
Also ja, PowerShell wird noch einige Zeit bei uns sein.
BEARBEITEN : Hinzufügen eines Codebeispiels, da es angefordert wurde
Hierbei wird eine mit einem Perl-Skript erstellte CSV-Datei verwendet und eine Gruppe von Gruppen aktualisiert. Wenn die Gruppe bereits vorhanden ist, wird die Mitgliedschaft durch die in der Datei angegebene ersetzt. Wenn die Gruppe nicht existiert, wird sie erstellt. Dies ist eine Einweg-Synchronisierung. Auch noch nicht ganz in Produktion, aber knapp.
quelle
Angesichts der Tatsache, dass die Serverprodukte von Microsoft von Anfang an PowerShell-fähig sein werden (ich glaube, die nächste Version von Exchange verfügt über die gesamte Konfiguration von PowerShell) und dass Bücher wie PowerShell in der Praxis einige großartige Möglichkeiten beschreiben, um ansonsten eintönige Aufgaben zu automatisieren, denke ich Es ist vernünftig anzunehmen, dass PowerShell noch eine Weile im Windows-Serverland weit verbreitet sein wird.
quelle
Ich würde den Podcast # 162 von Scott Hanselman empfehlen . Anscheinend sind alle Microsoft-Serverteams "gezwungen", PowerShell-Cmdlets bereitzustellen und eine einzige konsistente Syntax zu befolgen.
Auch Dritte wie VMWare übernehmen es
Kurz gesagt, ich bin der Meinung, dass PowerShell ab 2.0 das Ersetzen von Stapeldateien für alle Aufgaben, mit Ausnahme der einfachsten, ernsthaft zum Ziel hat.
quelle
Zehn PowerShell-Skripte, die ich als SQL Server-Datenbankadministrator verwende (alle werden in meinem Blog beschrieben / veröffentlicht ):
quelle
Welche Art von Administrationsaufgaben haben Sie damit geschrieben?
Überwachung von Anwendungen / Diensten: Rufen Sie wichtige Leistungszahlen aus (Remote-) EventLog und Stored Procedures ab und zeigen Sie sie aus einer einzelnen Batch-Datei an
Ich bin ein SQL Server DBA, zeige mir ein paar coole Dinge, die damit zu tun haben?
automssqlbackup : Tägliches Backup für MSSQL mit Rotation (täglich = inkrementell, wöchentlich + monatlich = voll; 5 tägliche, 5 wöchentliche Backups), Zippen, E-Mail-Benachrichtigung
quelle
Nachdem ich in einer früheren Karriere Unix-Shell-Skripte verwendet und dann zur Windows Server-Administration gewechselt bin, kann ich sagen, dass ich Powershell wirklich sehr schätze - ich habe weder Zeit noch die Fähigkeit, zu viel arkane Syntax zu lernen, und war angenehm überrascht darüber von Powershell-Skripten kann mit sehr einfacher Sprache geschrieben werden ... nimm das, was es wert ist, wie ich es gewohnt war, ksh !!
Ich gehe davon aus, dass es noch lange dauern wird.
quelle
Ich fand das cool: Mit SQL Server 2008 erhalten Sie neue PowerShell-Erweiterungen, mit denen Sie wie mit Ihrem lokalen Dateisystem oder Ihrer Registrierung in SQL-Datenbanken navigieren können.
Nach der Installation der SQL Server Client-Tools können Sie eine beliebige Datenbank in PowerShell öffnen (über das Kontextmenü mit der rechten Maustaste) und objektorientiert damit spielen:
Beachten Sie, dass die erste Zeile einfach die Eingabeaufforderung ändert, sodass sie nicht mehr so lang ist.
Ansonsten ist es hoffentlich selbstverständlich, was hier los ist :)
quelle
SQL Server 2008 verfügt jetzt über PowerShell-Kontextoptionen in Management Studio, sodass es von Exchange nicht mehr unterstützt wird. Stellen Sie es sich auch als DOS-Ersatz vor, da MS genau das dachte, weil sie die Sicherheit von DOS aufgrund von Abwärtskompatibilitätsproblemen nicht verbessern können. Sie haben also gerade etwas Neues erstellt und wammo, Problem gelöst!
quelle
Auch ich bin ein DBA und langjähriger Scripter, der auf DOS-Batchdateien zurückgreift, V3.3! Weiter zu VB Script, aber PS ist sehr mächtig. Schauen Sie sich an - Entschuldigung, ich kann den Link nicht posten, da ich ein neuer Benutzer bin. Hab das von Otto Helweg's Blog bekommen. Es ist ein billiges und fröhliches Softwareinventur-Tool.
Beispiel für ein PowerShell-Skript:
Dave J
quelle
Die folgenden Aufgaben werden von meinem Team regelmäßig mit PowerShell ausgeführt
Jeden Tag habe ich eine PS-Eingabeaufforderung, die ich für einmalige Aufgaben verwende, für die ich CMD verwendet habe.
Hier einige Codebeispiele zum Lesen von Sharepoint-Listen. Ich verwende Webservices von Sharepoint und das neue Cmdlet "New-WebServiceProxy" in PowerShell V2.0
Oisin Grehan hat einen großartigen Blogbeitrag über die Verwendung von Sharepoint-Webdiensten verfasst , auf dessen Basis ich alle meine Funktionen erstellt habe. Er selbst hat ein fantastisches Skript new-webservice.ps1, das Sie verwenden können, wenn Sie immer noch PowerShell V1 verwenden.
Hier ist auch die Basisfunktion, mit der ich den verfügbaren Speicher auf den Knoten in meinem Cluster abgerufen habe
quelle
Ich habe PowerShell für ein kleines Projekt bei der Arbeit ausprobiert - eine tägliche Migration einer Teilmenge von ~ 600 Benutzern und ~ 200 Gruppen aus dem Unternehmens- AD auf ein altes UNIX-System unter Verwendung von CSV- ähnlichen Dateien. Mir wurde ein 500-Zeilen- VBScript- Skript (!) Angeboten , das eine einzelne Gruppe und ihre Benutzer als Ausgangspunkt heranzog.
Es stellte sich heraus, dass ein ~ 20-zeiliges PowerShell-Skript die ganze Sache erledigen könnte ...
Als * NIX-Benutzer (Server- und Clientseite) war ich von PowerShell sehr positiv überrascht. Selbst wenn Sie nur eine kleine Teilmenge von Befehlen kennen, können Sie damit wirklich mächtig arbeiten. Ich brauche nur einen SSH (-ähnlichen) Fernzugriff ...
quelle
Wie kann ich es nicht benutzen? Alle Microsoft-Serveranwendungen, die herauskommen oder aktualisiert werden, werden jetzt mit Powershell verwaltet. Einige mehr oder weniger ärgerliche Benutzeroberflächen- / Verwaltungskonsolen sind dann auf diesem Kern aufgebaut, der oft sehr langsam ist, und, wie jemand betonte, es fehlen Funktionen, die verfügbar sind. Ich kann also nicht sagen, dass wir tatsächlich eine große Auswahl haben ^
quelle
Powershell ist nicht perfekt, aber wenn du es benutzt hast, weißt du, dass es ziemlich cool ist. Es ist ziemlich cool, Zugriff auf die gesamte .net-Bibliothek und die integrierten Cmdlets zu haben (und eigene Cmdlets mit PS in 2.0 zu erstellen).
Das einzige, was ich vermisse, ist eine gute IDE dafür, von der ich mir sicher bin, dass sie eines Tages von MS stammen wird. Im Moment benutze ich Ideras PowerShell Plus und Adminscripteditor, die das Debuggen erlauben und ziemlich cool sind.
Ich konnte mich ziemlich gut von VB entwöhnen.
Mein bisher größtes Projekt mit Posh ist die Verwendung von "PowershellASP", um eine einfache Webseite zu erstellen, auf der Powershell-Befehle ausgeführt und VMware-Host- und VM-Informationen von mehr als einem Dutzend VMWare ESXi-Hosts (kostenlos) abgerufen und in HTML-Tabellen angezeigt werden. Ich habe dies getan, weil es mit der kostenlosen VMWare ESXi und ohne virtuelles Zentrum keine andere Möglichkeit gibt, einen Echtzeitüberblick über alle meine VMs im Unternehmen zu erhalten. PowershellASP ist ein kostenloser Parser von Drittanbietern, der für IIS geschrieben wurde und von MS nicht unterstützt wird. Daher kann es derzeit einige eingeschränkte Aufgaben ausführen, und die Dokumentation ist recht spärlich.
quelle
Ich habe eine ganze Reihe von Verwaltungs- / Inventarskripten, die AD nach verschiedenen Dingen durchsuchen und diese über WMI nach wichtigen Statistiken wie Freigaben auf dem Server, Speicherplatz, verwendetem Speicherplatz usw. abfragen.
Allgemeine Skripte:
Benutzerskripte:
Ich habe eine, die alle VMWare-Gastcomputer auf meinen ESX-Servern auflistet
Ich habe ein Skript, das Dateien nach x Tagen erfasst und sicher löscht.
Grundsätzlich kann ich etwa 200 Zeilen VBScript und 10 Zeilen PowerShell verwenden. Sie können auch Dinge tun, die Sie in VBScript einfach nicht können oder die Sie nicht gut können - wie das Senden von E-Mails mit Anhängen -, die ich regelmäßig tue, um mir die Ergebnisse meiner Skripte zu senden. Sie können ausserdem aussagekräftige und eindeutige Einträge mit benutzerdefinierten Dienstnamen und Ereignis-IDs in das Ereignisprotokoll schreiben.
Das ist es, woran ich auf Anhieb denken kann. Mein bevorzugtes Werkzeug ist jetzt PowerShell. Es macht das Leben einfacher.
Grundsätzlich ist es für einen Systemadministrator genauso nützlich wie für einen Unix-Administrator Bash-Scripting.
quelle
Ich habe nach Poweshell gesucht, um unsere Client-Batch-Skripte zu ersetzen - Ausführen von Programmen, Anmeldeskripten usw.
Aber festgestellt, dass die Anmeldezeit um mindestens 10 Sekunden verlängert wurde - mit all den "Verbesserungen". Also blieb ich bei dem, was wir benutzten.
quelle
Da ich kein .NET-Entwickler bin, kann ich nur eingeschränkt alle .NET-bezogenen Extras verwenden, die Sie mit PS verwenden können. Als Exchange-Administrator (unter anderem) ist die PowerShell-Integration für Exchange 2007 jedoch FANTASTISCH. Endlich habe ich eine zuverlässige Skript-Engine für mein Mail-System. Bisher habe ich es geschafft, mir monatliche Statistiken für alle Postfächer zu senden, je nach Tageszeit die verschiedenen E-Mail-Adressen anzupassen, automatisch Berechtigungen für Öffentliche Ordner zu erstellen und zuzuweisen und Benutzer zwischen unseren beiden Postfach-DBs auszutauschen . Die andere coole Sache aus der Sicht von Ex07 ist, dass Sie, nachdem Sie irgendetwas in der GUI getan haben, die relevanten PowerShell-Befehle für das bekommen, was Sie gerade getan haben. Wenn Sie diese kopieren, erhalten Sie möglicherweise eine Reihe von PS-Skripten, mit denen Sie Ihre Exchange-Umgebung von Grund auf neu erstellen können.
quelle
Automatisieren bestimmter Dinge mit Serverüberprüfungen, bei denen ich arbeite (Sammeln grundlegender Informationen von WMI und Sammeln von Fehlern und Warnungen aus den Ereignisprotokollen).
Der Umgang mit Ereignisprotokollen ist fantastisch.
Ich habe kürzlich ein Skript geschrieben, um das Popup-Fenster für die automatische Aktualisierung zu deaktivieren, das Foxit Reader standardmäßig in einer Domäne aktiviert hat, in der das Skript ausgeführt wird. Es ruft eine Liste von Computern aus AD ab und testet dann, ob es aktiv ist. Dann ändert es eine 1 in eine 0.
Eines habe ich vergessen!
Sie haben so ziemlich vollen Zugriff auf die .NET-Bibliotheken. Es ist ein bisschen mühsam, wirklich komplizierte Sachen damit zu machen, aber wenn Sie das Bedürfnis haben, ist es für Sie da.
quelle
Wir verwenden es für einige Administrationsaufgaben, da es sich hauptsächlich um einen Microsoft-Shop handelt. Einige Skripte sind einfach, wie das Aufräumen alter Dateien oder das Defragmentieren von Computern und das Aufzeichnen der Ergebnisse. Ein Skript überprüft Computer hauptsächlich mit WMI und zeichnet die Ergebnisse in einer Datenbank auf. Es werden Informationen wie Hardware (CPU, RAM, Laufwerke usw.), Netzwerkinformationen, lokale Benutzer, installierte Software und Profilinformationen abgerufen. Es gibt einen, der einen Webdienst zum Senden von E-Mails aufruft. Ich denke, dass es in Zukunft den Rest der VBScript- Skripte ersetzen wird, die noch verwendet werden. Wir verwenden es noch nicht für Exchange- oder SQL Server-Aufgaben.
Ich freue mich auf die nächste Version, die Unterstützung für Hintergrundjobs, Transaktionen, bessere Ausnahmebehandlung, eine neue ISE (Integrated Scripting Environment), besseres Debugging usw. bieten wird.
quelle
Meine Windows-Administratoren verwenden PowerShell noch nicht. Sie haben alle davon gehört, aber sie haben sich nicht die Zeit genommen, sich damit vertraut zu machen.
Ich beschloss, es mir selbst anzusehen. Aus einem Unix-Shell-Hintergrund kommend dachte ich, dass Windows endlich eine echte Shell-Programmierumgebung haben muss. Ich denke, dass Microsoft einige Dinge mit PowerShell gut gemacht hat und einige Dinge nicht so gut.
Positiv zu vermerken ist die Verwendung von Objekten als Vermittler zwischen Cmdlets in PowerShell. Dies verleiht PowerShell eine Leistungsstufe, die textbasiertes Scripting umgehen muss, um mit der Arbeit zu beginnen.
Negativ ist, dass sie die meisten Unix-Shell-Befehle nicht wirklich nutzen. Daher ist die Lernkurve unnötig steil und es ist nicht einfach, von Unix zu PowerShell oder umgekehrt zu wechseln. Am häufigsten definieren sie Aliase für einige PowerShell-Cmdlets, z. B. ls als Alias für Get-ChildItem, wobei sich alle Befehlszeilenoptionen unterscheiden.
Nur meine zwei Cent ...
quelle
Dies ist eher eine Antwort für Entwickler, aber es ist eine reale Welt, und wir werden dies irgendwann in den nächsten Monaten testen. Ich fange an, PowerShell zu lernen, um Skripte zu schreiben, mit denen SQL Server-Aufgaben in unsere kontinuierliche Integrationsumgebung integriert werden können. Die fortlaufenden Integrationsskripte werden hauptsächlich von NAnt und MSBuild über JetBrains TeamCity ausgeführt .
Darüber hinaus möchte ich auf PowerShell als meine primäre Windows-Befehlsshell für allgemeine Zwecke und insbesondere für SQL Server-Datenbankverwaltungsaufgaben umsteigen.
Entschuldigung, ich habe noch keine Codebeispiele zum Teilen, da ich noch lerne! Ich werde gerne welche posten, wenn ich das tue :)
Hier ist ein Code-Beispiel für eine Zeile, mit dem ich gerade eine andere Frage von dir beantwortet habe :) Aber hey, für das Wiki ...
Dies listet die installierten Hotfixes auf:
quelle
Es ist zwar nicht die einfachste Skriptsprache (solide Erfahrung mit Pipes vorausgesetzt) und verfügt über einen eigenen Hebel an Seltsamkeiten (gib mir ein einfaches sed- ähnliches Ding !!), aber ich finde PowerShell ziemlich mächtig. Nicht auf dem Niveau von Bash oder anderen Unix-Shells, aber dennoch.
Ich verwende es, um einige Datenbankexporte und -importe mit E-Mail-Warnungen zu überwachen, falls etwas schief geht, und um einige routinemäßige Batch-Vorgänge durchzuführen.
Es ist sicherlich schon meine primäre Windows-Shell, obwohl es nicht wirklich das Zeug "schreibe weniger, mache mehr" ist. Die Ausführlichkeit (und die .NET-Vererbung) von PowerShell spielen dagegen.
quelle
PowerShell Version 1.0 war in vielerlei Hinsicht stark eingeschränkt, aber Version 2.0 kommt gut voran. Im Vergleich zu Batch-Skripten ist es viel leistungsfähiger. Ich benutze es nicht wirklich als Shell, nur für Skripte, also ist meine Erfahrung entsprechend gefärbt. Ich mag die Syntax nicht wirklich (
-eq
vs==
,-gt
vs>
, etc.), aber ich schätze es, in .NET vorbeizukommen, wenn ich etwas Seltsames tun muss. Ich denke, dass es mit Version 3.0 großartig wird. Im Moment würde ich es fest in die Kategorie "erledigt die Arbeit" setzen.Ich benutze es hauptsächlich zur Automatisierung der Bereitstellung von Code. Dies ist ein Bereich, in dem es darum geht, etwas in C # zu erstellen. Die Shell-bezogenen Operationen wie das rekursive Kopieren von Verzeichnissen und andere Dinge, die Bash-Skripter seit Jahren für selbstverständlich halten, machen die Dinge so viel einfacher.
quelle