PSCX 2.0

Es hat eine Weile gedauert, nun sind sie endlich da, die PowerShell Community Extensions (PCSX) 2.0, das bekannte Open Source-Projekt, das aus einer Reihe von Cmdlets, Funktionen und Providern besteht. Download hier

Die wichtigste Neuerung ist, dass die PSCX 2.0 auf einem Modul basieren. Der Inhalt der Zip-Datei muss daher lediglich als ein Verzeichnis mit dem Namen „PSCX“ in eines der beiden Modul-Verzeichnisse ($Env:PsModulePath) kopiert und anschließend über ein Import-Module PSCX in die aktuelle PowerShell-Sitzung geladen werden. Der wichtigste Tipp in diesem Zusammenhang  ist, die Zip-Datei (vor) dem Auspacken in den Dateieigenschaften zu „entblocken“, damit später keine lästigen Fehlermeldungen erscheinen.

Es gibt 13 neue Cmdlets und 11 neue Funktionen, die in der ReleaseNotes.txt namentlich erwähnt und durch die knappe,aber immerhin vorhandene Hilfe und einige Beispiele auch ausreichend beschrieben werden. Interessant sind vor allem die Cmdlets für den Zugriff auf den Alternate Data Stream (ADS) einer Datei, mit denen sich z.B. der „Zone.Identifier“ zum Entblocken einer heruntergeladenen Dateien entfernen lässt. Meine „Lieblings-Funktion“ ist Show-Tree, mit der sich die Verzeichnishierarchie wie beim guten, alten Tree-Kommando anzeigen lässt.

Das ConvertTo-Metric-Cmdlet ist nicht ganz so überflüssig wie es vielleicht erscheinen könnte. Wer schon immer einmal wissen wollte, wie breit ein 19 Zoll-Rack wirklich ist, findet es damit heraus:

PS >ConvertTo-Metric -Unit Inch 19
Length
——
48,26 cm

Wer wissen möchte, welche Einheiten beim Unit-Parameter überhaupt in Frage kommen, erfährt dies nicht aus der Fehlermeldung, denn die Units sind Properties und nicht Teil einer Enumeration, sondern muss dafür Get-Member bemühen:

[Pscx.SIUnits.NonSIUnit] | Gm -Static -Membertype Property | Select Name | Fw

Atmosphere                              Bar
BritishTermalUnit                       Calorie
Carat                                   Dram
ElectronVolt                            Foot
FootPound                               Grain
Inch                                    Mile
Ounce                                   Pound
Psi                                     Torr
Yard

Natürlich muss man wissen, dass es den Namespace Pscx.SiUnits mit einer NonSIUnit-Klasse überhaupt gibt. Das verrät u.a. der folgende Befehl:

@([AppDomain]::CurrentDomain.GetAssemblies() | Where { $_.Fullname -like „* pscx*“ })[1].GetTypes() | Where { $_.IsClass -and $_.Name -like „*unit*“ } | Select Name, Namespace

Name                        Namespace
—-                        ———

NonSIUnit                   Pscx.SIUnits
NonSIUnit`1                 Pscx.SIUnits
SIUnit                      Pscx.SIUnits
OrganizationalUnitClass     Pscx.DirectoryServices.ActiveDirectory
NonSIUnitConverter          Pscx.SIUnits

Gewusst wo ist hier wieder einmal die Devise.

Insgesamt hat das Team unter der Leitung von Keith Hill wieder eine tolle Arbeit geleistet. Vielen Dank.

 

 

PS > @([appDomain]::CurrentDomain.GetAssemblies() | Where { $_.Fullname -like „*
pscx*“ })[1].GetTypes() | Where { $_.IsClass -and $_.Name -like „*unit*“ }

Advertisements

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s