System-Administration mit Microsofts PowerShell Teil 6
.NET-Klassen mit der PowerShell verwenden
![]() |
Im sechsten Teil der PowerShell-Artikelserie zeigt SearchNetworking, wie von der PowerShell aus direkt auf die Klassen des .NET-Frameworks zugegriffen werden kann. Der Einsatz einer .NET-Programmiersprache ist dabei nicht erforderlich.
PowerShell-Anwendern steht damit eine gewaltige Funktionsbibliothek zur Verfügung, mit der viele Anwendungsfälle abgedeckt werden können. Allerdings sind dabei fundierte Kenntnisse des .NET-Frameworks unbedingt erforderlich. Dieser Artikel zeigt den grundlegenden Zugriff.
Statische Eigenschaften und Methoden verwenden
Die Verwendung einer statischen Eigenschaft oder Methode einer .NET-Klasse gestaltet sich besonders einfach. Der grundsätzliche Aufruf sieht dabei wie folgt aus:
[<Klassenname>]::Eigenschaft
und
[<Klassenname>]::Methode(<Parameter>)
Statische Eigenschaften und Methoden können damit direkt aufgerufen werden. Ein Instanziieren der Klasse, also das Erstellen eines Objekts, ist dabei nicht erforderlich.
Als erstes Beispiel dienen aus der Klasse Math die statische Eigenschaft Pi, zur Ermittlung des gleichnamigen Werts, und die statische Methode Sin, um eine Sinus-Berechnung durchzuführen. Mit folgendem Aufruf wird der Wert von Pi bzw. der Sinus von x zurückgegeben:
[Math]::Pi
[Math]::Sin(x)
Klassen instanziieren
Muss zuerst ein Objekt einer Klasse erstellt werden, ist der Aufruf der Eigenschaften und Methoden etwas aufwändiger. Betrachten wir als Beispiel die Klasse Net.WebClient. Diese enthält die Methode DownloadFile, mit der eine Datei aus dem Internet geladen und lokal gespeichert werden kann. Zunächst wird ein Objekt von Net.WebClient erstellt. Dazu wird das Cmdlet new-object aufgerufen und dabei dem Parameter typename der Klassenname übergeben. New-object liefert daraufhin das gewünschte Objekt, das in einer Variablen zur weiteren Verwendung gespeichert werden sollte. Der Aufruf sieht damit wie folgt aus:
$web = new-object -typename Net.WebClient
Im nächsten Schritt kann nun über die Variable $web die gewünschte Methode aufgerufen werden. Beispiel:
$web.DownloadFile(„http://www.searchnetworking.de/img/logo_vogel.gif“, „c:\logo_vogel.gif“)
Eingabe-Formulare erstellen
Das .NET-Framework enthält eine Vielzahl an Klassen, die zur Darstellung von Fenstern, wie Eingabeformularen, gedacht sind. Noch zu Zeiten des Windows Script
Auch mit der PowerShell ist der Aufbau eines Fensters nicht einfach, über das .NET-Framework ist es aber möglich. Hier ein Beispiel für ein einfaches Fenster mit nur einer Schaltfläche:
[void][reflection.assembly]::LoadWithPartialName(„System.Windows.Forms“)
$form = new-object Windows.Forms.Form
$form.Text = „Beispielfenster“
$button = new-object Windows.Forms.Button
$button.Text = „OK“
$button.Left = 100
$button.Top = 100
$button.Width = 50
$button.Height = 25
$button.Add_Click({$form.close()})
$form.Controls.Add($button)
$form.ShowDialog()
Das Beispiel soll lediglich zeigen, wie aufwändig es ist, auf diesem Weg ein Formular zu erzeugen.
Das Problem dabei ist die aufwändige Gestaltung des Formulars. Visual Studio-Entwickler machen dies per Drag-and-Drop mit dem so genannten Formular-Designer. Dieser erstellt im Hintergrund den nötigen .NET-Code. Leider unterstützt dieses Tool aber nicht die PowerShell und deshalb muss hier die Oberfläche sehr arbeitsintensiv zusammengestellt werden.
Die Dokumentation sämtlicher .NET-Klassen finden Sie unter der unten angegebenen Adresse. Leider ist diese Hilfe nicht für die PowerShell gedacht und so finden sich dort ausschließlich Beispiele für „richtige“ .NET-Programmiersprachen wie C# und Visual Basic.NET. Eine hilfreiche Orientierung ist die Dokumentation aber dennoch.
Im nächsten Teil der PowerShell-Artikelserie wird der Zugriff auf Systeminformationen über die WMI-Cmdlets der PowerShell erläutert.
Microsoft Deutschland GmbH
Firmenprofil
Kontakt
-
Kommentar zu: Polycom baut an Partner-Galaxie für mehr UCC und Video-Kommunikation
posted am 12.03.2010 um 12:59 von Leserbrief SNET
-
RE(5): Kein Ruhezustand mehr bei Vista???
posted am 11.03.2010 um 14:22 von Only_Cisco
-
Laufwerksbuchstabe für 2. Platte in Windows98 ändern?
posted am 11.03.2010 um 09:51 von Vince
-
RE(2): WPA-PSK + WPA2-PSK gleichzeitig einstellen?
posted am 11.03.2010 um 09:49 von WLAN-Meister
-
ZyWall 35 - Wrong product Model
posted am 09.03.2010 um 17:58 von nicht registrierter User
Follow us!

















posted am 07.09.2009 um 19:52 von Unregistriert
posted am 26.08.2009 um 09:34 von Unregistriert
Mitdiskutieren