Flexible Automation von Managementfunktionen per Skripts

Windows Server 2008: Einführung in neue PowerShell-Funktionen

12.03.2008 | Autor / Redakteur: MS Powershell-Expertenteam / Ulrich Roderer

Windows PowerShell mit grafischer Oberfläche
Windows PowerShell mit grafischer Oberfläche

Nach einer internationalen Umfrage von TechTarget haben nur die Hälfte der befragten IT-Administratoren Pläne auf die neue Version des Windows Server 2008 upzugraden. Dabei bietet der neue Windows Server Funktionen, die sich lohnen. Mit PowerShell lassen sich administrative Aufgaben besser automatisieren.

Zum Start des neuen Servers 2008 hat sich DataCenter-Insider Amerika von den Ingenieuren des Microsoft PowerShell-Teams die Grundlagen der neuen Windows PowerShell anhand der wichtigsten Befehle und Anwendungsszenarien erklären lassen.

Die neue Windows PowerShell

Windows PowerShell ist eine Kommando-basierte Shell sowie eine Scripting–Sprache mit mehr als 130 Tools und Hilfsprogrammen, die über eine konsistente Syntax per Kommando abrufbar sind. Die Powershell ist jetzt zum ersten Mal Bestandteil des Windows Server 2008 und läuft unter Windows XP, Windows Vista und Windows Server 2003. Sie kann ebenfalls zum Managen des Exchange Servers 2007, des System Center Operations Managers 2007, des System Center Data Protection Managers V2 und des System Center Virtual Machine Managers eingesetzt werden.

Sie gehört zu einer Menge neuer Managementfunktionen des Windows Server 2008 wie dem Server Manager, Server Core, Eevnt Viewer, Task Scheduler sowie dem Reliability und Performance Monitor.

PowerShell –Anwendung in der Praxis

  • Das Verwalten von kommandobasierten Diensten, Prozessen, Registry sowie WMI-Daten

Häufige Server-Administrationsaufgaben wie das Identifizieren laufender Prozesse oder Dienste, Einblicke in die Registry oder das Lesen und Verändern von Einstellungen im Windows Management Instrumentation (WMI) lassen sich einfacher erledigen, wenn dazu die folgenden, in der PowerShell implementierten kommandozeilenorientierte Tool (cmdlets) verwendet werden: get-service, get-process, get-wmiobject sowie der Registry Provider

  • Terminal Server Manager

Der Terminal Server speichert eine große Datenmenge in der WMI. Mit PowerShell-Scripts lässt sich die Konfiguration des Terminal Servers automatisieren und gleichzeitig können Administratoren die Konfigurationen einer Terminal Server Farm auf Gleichheit oder Unterschiede prüfen. Viele Beispiele dazu finden sich im Microsoft TechNet ScriptCenter.

  • Konfigurieren der Internet Information Services 7.0 (IIS 7.0)

Windows PowerShell verwaltet auch IIS 7.0, sowohl das Deployment als auch die Konfiguration des IIS 7.0 über eine Webfarm. Detailierte Informationen dazu finden sich unter IIS.net sowie Channel 9.

Top PowerShell-Kommandos

Es folgen Beispiele und Tricks der wichtigsten Kommandos vom PowerShell-Team. Kommandos zum Einholen von Informationen starten von der Syntax her immer mit einer „Get-“Anweisung.

  • Das wichtigste Kommado für WMI ist “Get-WMIObject”. Um beipsielsweise Informationen aus dem BIOS zu lesen:

PS (415) > Get-WmiObject win32_bios | select serialnumber

  • Um eine Liste aller installeirten Services zu erhalten:

PS (423) > (get-service).count
131

  • Um Services zu finden, die gerade laufen:

PS (424) > (get-service | where {$_.status -eq „running“}).count
77

Darüber hinaus finden sich viele Beispiele der Anwendung von PowerShell um den Exchange Server zu managen in der Exchange Server Wiki.

  • Als Beispiel das folgende Script um Mailbox-Statistiken anzuzeigen:

get-mailbox | get-mailboxstatistics | select-object

  • Eine umfassende Sammlung von Befehlen zum Managen des Virtual Machine Manager (VMM) finden sich im VMM Cmdlet Reference Document (siehe Anhang als Downloaddatei). Ein Beispiel:

Um eine physische Festpaltte von einer Quellmaschine auf eine virtuelle Platte zu kopieren:

PS C:\> $Credential = Get-Credential
PS C:\> Get-VMMServer -ComputerName „VMMServer1.Contoso.com“
PS C:\> $VMHost = Get-VMHost -ComputerName „VMHost01.Contoso.com“
PS C:\> Copy-HardDisk -SourceComputerName „P2VSource.Contoso.com“ –VolumeDe
viceID „C“ -Credential $Credential -VMHost $VMHost -Path „C:\MyVHDs“ –Fixed
-DiskSizeAdd 1024

Das erste Kommando “Get-Credential” verlangt die Eingabe des Anwendernamens und des Passworts und speichert diese Angaben in der Variable $Credential. Verlangt werden entweder die Zugangsdaten des lokalen Administrator-Accounts oder ein Domain-Account mit Administratorechten über den Rechner, in dem sich die Festplatte befindet, die auf eine virtuelle konvertiert werden soll.

Der zweite Befehl verbindet den VMMServer1 mit der Contoso.com-Domain und holt das Serverobjekt aus der Virtual-Machine-Manager-Datenbank. Die nachfolgenden Befehle verwenden dann standardmäßig diesen Server.

Das dritte Kommando holt das Objekt, das den Host VMHost01 repräsentiert in die Contoso.com-Domain und speichert das Host -Ojekt in der Variable $VMHost.

Der letzte Befehl kopiert und konvertiert das Laufwerk C: des Quellrechners (Name P2VSource auf der Contoso.com-Domain) in eine neue virtuelle Platte C: auf dem Host VMHost01 mit den angegebenen Pfad C:\MyVHDs. Dieser Parameter legt fest, dass .vhd ein festes und kein dynamisches Format hat. Der Parameter DiskSizeAdd vergrößert die Plattenkapazität jeweils um 1024 MByte. Wird der Befehl ausgeführt, liefert $Credential die Zugangsdaten des Administrators an Copy-HardDisk.

Es folgen einige kurze Befehle für den IIS7:

Um einen Webserverdienst zu starten oder anzuhalten kann man den Start-Service- und Stop-Service-cmdlets verwenden.

Start-Service -servicename w3svc
Stop-Service -servicename w3svc

  • Sollten Sie den IIS WMI Provider installiert haben, können Sie das Get-WmiObject -cmdlet verwenden, um eine Liste der Websites auf dem Server zu erhalten.

Get-WmiObject -namespace „root\WebAdministration“ -class Site

  • Administratoren, die genau wissen welche Klassen sie arbeiten müssen, können das Get-WmiObject-cmdlet nutzen, um eine Vielzahl von Funktionen auszuführen. Dazu wendet man den is–List Parameter auf Get-WmiObject an:

PS (426) > (get-wmiobject -list).Count
930

  • Es gibt 930 WMI-Klasses, so dass die Suche nach spezifischen Klasen besonders wichtig ist. In PowerShell ermöglicht das der Befehl “Where-Object“, um nach den Eigenschaften von Namen zu suchen. Das folgende Beispielkommando findet alle WMI-Klasses mit „computersystem“ im Namen:

get-wmiobject -list | where {$_.name -match „computersystem“ }

  • Mit der nächsten Frage lässt sich die Win32_ComputerSystem-Klasse finden. Um herauszufinden, welche Eigenschaften diese Klasse hat, nutzt man am besten das Get-Member-cmdlet.

get-wmiobject Win32_ComputerSystem | get-member –type property

  • Um die Eigenschaft in Megabytes darzustellen:

PS (26) > (get-wmiobject win32_computersystem).totalphysicalmemory / 1mb
2046.4765625

  • Eine weitere wichtige Informationsquelle ist der Event log. Nachfolgend ein Beispiel, um die 100 letzten Events nach Fehlern abzusuchen:

get-eventlog system -newest 100 | where {$_.entrytype -eq „error“ }

Weitere PowerShell-Tips

PowerShell last sich auch in andere Programme als Scripting-Sprache embedden wie beispielsweise in den Windows Scripting Host (dann muss .NET stat .COM verwendet werden).

Anwender haben bereits neue Hosts für PowerShell entwickelt wie PowerGUI und PowerShell Plus. Es ist zudem möglich, neben dem Kommandozeileneditor auch eine grafische Oberfläche über die PowerShell-Engine zu legen.

Eine häufige Frage heisst: „Welches Äquivalent zum „attrib“-Befehl der cmd.exe existiert in der Powershell?“ Die Antwort ist einfach: „attrib“ wie in der cmd.exe.

Was meinen Sie zu diesem Thema?

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 2011381 / Middleware)