Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. ASP.NET

Begrüßen Sie PowerShell

Read Time: 11 mins

German (Deutsch) translation by Katharina Grigorovich-Nevolina (you can also view the original English article)

PowerShell befindet sich seit über zehn Jahren in der Entwicklung. Microsoft investiert weiterhin in seine Entwicklung und Einführung. Diese Investitionen haben die Leichtigkeit und Robustheit verändert, mit der Entwickler und Administratoren Windows-Aufgaben automatisieren können.


Was ist PowerShell?

PowerShell löst Administrations- und Anpassungsprobleme durch die nahtlose Integration von .NET Framework.

PowerShell ist das Task-Automatisierungsframework von Microsoft, das aus einer Befehlszeilen-Shell, einer integrierten Skriptumgebung (ISE), einer auf .NET Framework basierenden Skriptsprache und einer API besteht, mit der Sie PowerShell in Ihren .NET-Anwendungen hosten können Automatisierungsplattform. PowerShell bietet vollständigen Zugriff auf COM und WMI, sodass Sie Aufgaben sowohl auf lokalen als auch auf Remote-Windows-Systemen ausführen können.

PowerShell ist eine neue Plattform für die Automatisierung, bei der Administrations- und Anpassungsprobleme durch die nahtlose Integration von .NET Framework gelöst werden. Es ist gut für Entwickler, Administratoren, Tester und mehr. Basierend auf .NET senkt das Werkzeug die Kosten und bietet Entwicklern und Administratoren eine einfache und unternehmensfähige Möglichkeit, alle Prozesse zu automatisieren, zu messen und zu verbessern.


Folgen Sie entlang

In diesem Intro werde ich einige der Tiefen und Breiten hervorheben, die PowerShell auf den Tisch bringt. Dinge wie die bahnbrechende Objektpipeline, die REPL (Lesen, Auswerten, Druckschleife), die .NET-Integration und vieles mehr.

Wenn Sie Windows 7 oder 8 ausführen, ist PowerShell bereits installiert. Laden Sie hier PowerShell v3 für Windows 7 herunter. Sie benötigen Windows 7 SP1 und das Herunterladen funktioniert auch für Windows 2008 R2 SP1 und Windows 2008 SP2. Wenn Sie Vista, XP oder Windows 2003 ausführen, müssen Sie sich hier mit PowerShell v2 zufrieden geben.


Wozu ist es gut? Absolut alles!

Von der Bereitstellung mehrerer Ressourcen in Azure über die Verwaltung Ihrer Software-Builds für die kontinuierliche Integration bis hin zum Zugriff auf Webdienste oder REST-Endpunkte. PowerShell bietet Ihnen alles und bietet noch viel mehr.

  • Schneiden, würfeln Sie Text, XML, CSV und JSON mit Leichtigkeit
  • Betten Sie PowerShell ein, um Skriptfunktionen für Ihre C# -Anwendungen bereitzustellen
  • Erstellen Sie GUI-Anwendungen fünf- bis zehnmal schneller mit weniger Code
  • Nutzen Sie die Funktionen von PowerShell für die Arbeit mit dem Internet
  • Interagieren Sie mit DLLs und erstellen Sie Objekte, zeigen Sie Eigenschaften automatisch an und rufen Sie Methoden in interaktiven Live-Sitzungen auf
  • Erstellen Sie domänenspezifische Sprachen (DSLs) und Vokabulare, um Lösungen klarer auszudrücken
  • Arbeiten Sie mit Microsoft Office via das Component Object Model (COM).
  • PowerShell v3-Funktionen

Bootstrapping von PowerShell

Was ist ein Cmdlet? Ein Cmdlet ist der grundlegende Baustein in PowerShell und wird als Verb-Nomen-Paar ausgedrückt, um sie selbstbeschreibend zu machen. Zum Beispiel:

PowerShell enthält Hunderte von Kern-Cmdlets, und Sie können Ihre eigenen schreiben.

Merken Sie zwei Cmdlets

PowerShell erleichtert die Auffindbarkeit. Verwenden Sie Get-Command, wenn Sie zum blauen Bildschirm von PowerShell gehen und sich nicht sicher sind, was Sie tun sollen.

Das Cmdlet Get-Command ruft alle auf dem Computer installierten Befehle ab, einschließlich Cmdlets, Aliase, Funktionen, Workflows, Filter, Skripts und Anwendungen.

Im Wesentlichen zeigt Ihnen Get-Command alle Dinge, die Sie in der aktuellen PowerShell-Sitzung tun können.

Get-Command

Get-Command unterstützt Platzhalter. Angenommen, ich möchte alle Cmdlets sehen, die das Verb Invoke enthalten.

Folgendes erhalte ich nach dem Drücken enter.

Was sind die Cmdlets, die mit dem Substantiv Item enden?

Beachten Sie, dass Sie andere Verben wie Löschen, Neu, Entfernen und Festlegen sehen.

Als Nächstes werde ich einige Cmdlets verwenden, um zusammenzufassen, was in meiner Sitzung auf einer meiner Boxen verfügbar ist, wenn ich die PowerShell-Konsole starte.

Ich rufe Get-Command auf, gruppiere es und sortiere es. Hier kann ich sehen, dass ich über 1000 Cmdlets habe, mit denen ich arbeiten kann. Ich verwende PowerShell v3 mit zusätzlichen installierten Modulen, sodass Ihr Kilometerstand variieren kann.

Aus welchen Modulen stammen diese Cmdlets? Wir können diese Frage folgendermaßen beantworten:

Mit PowerShell kann ich viel erreichen.

Get-Help

Get-Help macht genau das. Es zeigt Hilfe für das Cmdlet an, über das Sie mehr wissen möchten. Es ist nicht nur einfach, Hilfe zu erhalten, sondern es ist auch einfach, Hilfe für die von Ihnen entwickelten Cmdlets/erweiterten Funktionen zu erstellen/einzuschließen, ein Thema für einen anderen Artikel. Hilfe an Ihren Fingerspitzen zu haben, spart viel Zeit.

Hier ist eine verkürzte Version der Ausgabe.

Noch einfacher; Im Cmdlet Get-Help gibt es dafür einen Schalter, der Sie hierher führt.

Möchten Sie nur Beispiele zur Verwendung des Cmdlets sehen? Verwenden Sie den Schalter -Examples. Außerdem können Sie das Beispiel direkt in die Konsole kopieren und einfügen und ausführen.

So einfach und schnell geht das.


PowerShell funktioniert problemlos mit Webdiensten

Das W3C definiert einen "Webdienst" als:

[...] ein Softwaresystem zur Unterstützung der interoperablen Interaktion von Maschine zu Maschine über ein Netzwerk. Es verfügt über eine Schnittstelle, die in einem maschinenverarbeitbaren Format (speziell WSDL) beschrieben ist. Andere Systeme interagieren mit dem Webdienst auf eine Weise, die in seiner Beschreibung unter Verwendung von SOAP-Nachrichten vorgeschrieben ist, die normalerweise über HTTP mit einer XML-Serialisierung in Verbindung mit anderen webbezogenen Standards übermittelt werden.

PowerShell erledigt Web Services mithilfe des Cmdlets New-WebServiceProxy schnell. Ändern Sie die $zipcode, führen Sie sie aus und erhalten Sie die neuesten Wetterinformationen.

Ergebnis

Ich speichere das Proxy-Objekt in $svc und rufe dann die GetCityForecastByZIP-Methode auf, um die Ergebnisse in $result zu erfassen. Beim Durchlaufen des ForecastResult-Arrays transformiere ich den Datensatz in den Daten. Beachten Sie, dass sich City und DaytimeHigh in der Hierarchie auf verschiedenen Ebenen befinden.

Die von mir verwendete Technik besteht darin, Schlüssel / Wert-Paare für die Hashtabelle zu erstellen. @{} ist die PowerShell-Syntax für eine neue Hashtabelle. Die Verwendung von [PSCustomObject] ist ein PowerShell-Beschleuniger, mit dem ich zum einen ein benutzerdefiniertes Objekt aus einer Hashtabelle erstellen kann.

Der Weather.asmx-Webdienst hat hierarchisches XML zurückgegeben. In einigen PowerShell-Befehlen habe ich die Daten neu gestaltet und sie (das Datum) nach meinen Wünschen formatiert. In diesem Beispiel habe ich PowerShell ausdrucken lassen. Sobald ich die Daten in meiner PowerShell-Sitzung habe, bin ich jetzt mit dem PowerShell-Ökosystem verbunden und kann dieses Array von benutzerdefinierten Objekten problemlos an andere Cmdlets weiterleiten, um sie an einen anderen Webdienst zu übertragen, HTML zu generieren, in einer Datei zu speichern und eine CSV zu erstellen Datei oder exportieren Sie es in eine SQL-Datenbank.

Mit CSV, JSON und XML arbeiten

Das Schneiden und Würfeln von Textformaten ist ein PowerShell-Sweetspot. Hier konvertiere ich drei gängige Formate in ein PowerShell-Objekt. Für CSV und JSON verwende ich die richtigen ConvertFrom-* Cmdlets, und für XML verwende ich den Beschleuniger, der XML verwendet und ein XMLDocument erstellt.

Wir haben also drei heterogene Formate verwendet und am Ende eine Aggregation über eines der Felder durchgeführt. Ich hätte jeden dieser Datenfeeds von verschiedenen Orten abrufen können, die CSV von einer Netzwerkfreigabe, den JSON für eine REST-Abfrage und das XML von einem Webdienst. Wie gesagt, dies ist ein PowerShell-Sweetspot.


Verwenden wir die Such-REST-API von Twitter in der Befehlszeile. Ich erstelle die URL, die Sie in Ihrem Browser verwenden können, und verwende dann das PowerShell-Cmdlet Invoke-RestMethod. Es sendet eine Anforderung an den REST-Service und ermittelt, ob die Antwort XML oder JSON ist. Hier fordere ich eine JSON-Antwort an, damit Invoke-RestMethod die Ergebnisse in ein Array von PowerShell-Objekten konvertiert. Ich leite sie an das Cmdlet Select (ein Alias des Verb-Nomen Select-Object) weiter und wähle nur drei Felder aus. Stellen Sie sich dies als eine Projektion vor, ähnlich wie bei LINQ oder SQL.

Ergebnis

So einfach ist das. Schauen Sie sich ein Video an, das ich für Version 2 gemacht habe: "PowerShell, ShowUI und die Twitter-API". Eine Mini-WPF-Twitter-App in einer Handvoll PowerShell.


Kompilieren von C# im laufenden Betrieb in PowerShell

PowerShell ist eine interpretierte Sprache. Es wird also eine Strafe geben. Es ist kein großes Problem, aber manchmal benötigen Sie die Geschwindigkeit einer kompilierten Sprache. Mit PowerShell können Sie C# im laufenden Betrieb in Ihrer PowerShell-Sitzung mithilfe des Parameters -TypeDefinition im Cmdlet Add-Type kompilieren. Beachten Sie die here-string, identifiziert durch die @" "@ . Sie sind sehr nützlich, wenn Sie Text zitieren. Ich empfehle Ihnen, mehr über die Angebotsregeln von Add-Type und PowerShell zu erfahren.

Interaktion mit DLLS

Nehmen wir an, ich habe Ihnen nicht den Quellcode gegeben - nur die kompilierte DLL. Kein Problem: Add-Type hat einen -Path-Parameter.

Achten Sie besonders darauf. Wenn Sie Add-Type auf diese Weise verwenden, können Sie jede .NET-DLL, die von jemandem stammt, einfach umbrechen, wenn dieser noch keine PowerShell-Schnittstelle bereitgestellt hat. Dies gilt unabhängig davon, ob die DLL von Microsoft, DELL, Citrix oder einem anderen Entwickler stammt.


Zum Schluss

Das macht es also erstmal. Möchten Sie mehr Powershell-spezifische Inhalte auf Nettuts+ sehen? Lasse Sie es uns unten wissen!

Advertisement
Did you find this post useful?
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.