PowerShell Version 3

PowerShell 3 ersetzt die bisherige PowerShell 2 oder 1. Das Installationspaket kann per Windows Update oder manuell installiert werden. Allerdings muss zuerst das NET 4 Framework installiert sein.


Windows Management Framework 3.0  (ca. 10-15)
http://www.microsoft.com/en-us/download/details.aspx?id=34595

  • 2506143 Description of Windows Management Framework 3.0 für Windows 7 SP1 and Windows Server 2008 R2 SP1
  • 2506146 Description of Windows Management Framework 3.0 für Windows Server 2008 SP2

WARNUNG

Prüfen Sie unbedingt die Kompatibilität ihrer Serveranwendungen mit PowerShell 3.

Exchange 2010 SP3 ist "kompatible" mit PowerShell 3. Die Verknüpfung forciert die Version 2.0

C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -version 2.0 -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto"

Die folgende Liste sind meine eigenen Erfahrungen mit PowerShell 3 und Produkten:

Produkt Status Weitere Informationen

Exchange 2000/2003

PowerShell wird von diesen Exchange Versionen nicht genutzt und sollte daher keinen Einfluss haben. Allerdings ist es nicht supported, PowerShell 3 auf Exchange 2000/2003 zu installieren.

Das wird aber auch schwer, da PowerShell 3.0 nur für Windows 2008 und höher zur Verfügung steht und Exchange 2000/2003 gar nicht auf Windows 2008 installierbar ist. Siehe auch Installationsmatrix.

Exchange 2007

Exchange 2007 ist noch nicht mit PowerShell 3 kompatibel !

Exchange 2010

Diese Kombination war einige Zeit lang unterstützt aber mittlerweile trifft dies nicht mehr zu. Installieren Sie Bitte WMF4

Exchange 2013

PowerShell 3.0 ist Installationsvorrausetzung für Exchange 2013

OCS 2007

Ich habe noch keine Quelle zu einer offiziellen Aussage gefunden. OCS nutzt zwar keine PowerShell aber intensiv die WMI-Funktionen. Ich würde das Update noch nicht installieren.

Lync 2010

Ich habe noch keine "Freigabe" für PowerShell 3 auf Lync 2010 gefunden. Insofern würde ich mit der Installation warten.

Lync 2013

PowerShell 3.0 ist Installationsvorrausetzung für Lync 2013

SCCM

Ganz gemein ist der Fehler mit dem SCCM2012 Client. Dieser glaubt einen Fehler in WMI gefunden zu haben und "löst" diesen durch Neueinrichtung der Komponenten. Leider wird dabei WMI auch beendet, was auf Servern durchaus auch andere Dienste (z.B. Hyper-V  !!) beendet.

  • 2796086 Configuration Manager Management Points collocated with clients fail after installing Windows Management Framework 3.0 and running Client Health Evaluation

Es existiert ein Workaround durch setzen eines Registry-Schlüssels, wer nicht auf das SP1 warten will

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CCM\CcmEval]
"NotifyOnly"="True"

Vielleicht sollten Sie auch hier auf das Rollout von SCCM 2010 SP1 warten, was aber zumindest zum Zeitpunkt des PowerShell 3 Release noch gar nicht verfügbar war.

Wieder einmal lernen wir, dass man nicht "blind" auf Windows Update vertrauen sollte. Besonders die "optionale Software" sollten nur dann installieren, wenn die Kompatibilität mit auf dem System installierten Diensten geprüft ist. Windows Update prüft nämlich nicht mal die Kompatibilität mit anderen wichtigen Microsoft Anwendungen und erst recht nicht zu anderen Produkten.

Wenn Sie irrtümlich das Update schon installiert haben, dann können Sie es über die Systemsteuerung auch wieder deinstallieren. Eine der beiden Nummern sollte vorhanden sein.

  • 2506143 Description of Windows Management Framework 3.0 für Windows 7 SP1 and Windows Server 2008 R2 SP1
  • 2506146 Description of Windows Management Framework 3.0 für Windows Server 2008 SP2

Sollte auch nach der Deinstallation die Exchange MMC nicht sauber funktionieren, dann kann dies an alten Dateien im Benutzerprofil liefen.
"AppData\Roaming\Microsoft\Exchange\RemotePowerShell.

Show-Command

Kennen Sie schon die Zwischenlösung einer reinen Kommandozeile und der ISE?. Dann tippen Sie mal "Show-Command" auf der PowerShell 3.0 Eingabeaufforderung auf. Sie sehen alle verfügbaren Commandlets und können sogar die Parameter einfach in einer GUI eingeben. Zugegeben für einen erfahrenen PowerShell Nutzer eher Spielerei und Zeitverschwendung aber für angehende Administratoren vielleicht eine Erleichterung.

$PSItem

Die Verarbeitung von Elementen einer Pipeline in einem Skript wurde bis PowerShell 2 mit der Variable "$_" ermöglicht. Anscheinend haben viele diese Schreibweise nicht gerade als gelungen angesehen. Seit PowerShell 3 gibt es nun mit $PSItem einen vielleicht lesbareren Namen.

Ich werde aber weiter bei "$_" bleiben, weil ich es zum einen gewohnt bin und den Code auch so verstehe. Aber vor allem weil ich damit nicht erst sicherstellen muss, dass der Code auch wirklich unter PowerShell 3 läuft. Solange Exchange 2010 und Exchange 2007 noch keine PowerShell 3 unterstützen ist mir das Risiko einfach zu große, dass ein Code einfach nichts macht. Unter PowerShell 2 ist die Variable "$PSItem" nämlich per Default leer. Nur der kleine Eintrag

Tail

Die bis PowerShell 2 eingebauten Funktionen von Get-Content waren sehr beschränkt um das Ende einer Datei zu überwachen. Get-Content konnte zwar am Ende warten aber hat immer am Anfang der Datei angefangen zu lesen, was sehr lange dauert. Zudem konnte es nicht nach einiger Zeit oder Zeilen zurückkehren.

Daher habe ich schon länger das Skript Get-Tail für diesen Einsatz entwickelt.

PowerShell 3 liefert nun ein etwas verbessertes "Get-Content" mit, welches nun auch direkt an das Ende einer Datei springen, eine genannte Anzahl an Zeilen zurück gehen oder nach einigen Zeilen zurückkehren kann. Allerdings kann es sich noch nicht die letzte Position merken.

Videos

Bandbreite im Internet ist ja immer mehr und was früher ein Textfile oder kleines Dokument war, sind nun HD-Videos zum anschauen:

Weitere Links