Kleine Tipps für Zwischendurch – Alle ProgIds auflisten und ein PowerShell-Skript von VBScript aus aufrufen

Dieser Tipp ist (wie viele andere natürlich auch) etwas älter, aber sehr nützlich. Möchte man wissen, ob eine bestimmte „ProgID“ (für das Ansprechen einer COM-Komponente) existiert oder wie eine ProgID für eine Anwendung/Komponente, deren Namen man kennt, lauten könnte, ist der folgende Befehl Gold wert, denn er listet alle ProgIDs auf:

dir REGISTRY::HKEY_CLASSES_ROOT\CLSID -include PROGID -recurse | foreach {$_.GetValue(„“)}

Dass es für die PowerShell offenbar keine ProgID gibt (und sie daher nicht per COM-Automatisierung gesteuert werden kann) macht der folgende Befehl deutlich:

dir  REGISTRY::HKEY_CLASSES_ROOT\CLSID -include PROGID -recurse | foreach { $Progid = $_.GetValue(„“); if ($Progid -match „Shell“) { $Progid } } | sort-object

Es werden zwar etliche ProgIDs aufgelistet, der Name „PowerShell“ ist nicht dabei.

Wie sich die ProgID zu einer Exe-Datei (sofern vorhanden) finden lässt, verrät der folgende „Tipp“, bei dem es sich ein PowerShell-Skript handelt, bei dem was die .NET-Funktionalität angeht, die im dem Skript angesprochen wird, an das sprichwörtlich „Eingemachte“ geht:

http://www.eggheadcafe.com/conversation.aspx?messageid=30740363&threadid=30740360

Irgendwie habe ich das Gefühl, es müsste eine einfachere Lösung geben:)

Ausgangspunkt für die Suche war die Frage gewesen, wie sich ein PowerShell-Skript von einem VBScript-Skript aus aufrufen lässt (damit ließe sich ein PowerShell-Skript z.B. als Anmeldeskript im Rahmen der Gruppenrichtlinien ausführen). Wie es aussieht, gibt es mind. 2 Lösungen:

1) Der Aufruf von PowerShell.exe über das WshShell-Objekt und seine Run-Methode. Die folgende Befehlsfolge führt das PowerShell-Skript C:\PS\Test.ps1 aus:

‚ Ruft ein PowerShell-Skript auf
Option Explicit
Dim WShell, PsCmd
Set WShell = CreateObject(„Wscript.Shell“)
‚ PsCmd = „powershell.exe -noprofile -noexit -Command &’C:\PS\Test.ps1′“
PsCmd = „powershell.exe -noprofile -Command &’C:\PS\Test.ps1′“
WShell.Run PsCmd

Die Variante mit dem –NoExit-Parameter bewirkt, dass das PowerShell-Konsolenfenster nicht wieder geschlossen wird.

2) Eine COM-Komponente mit dem Namen ActiveXPosh, die von der Firma Sapien dankenswerterweise free“ (ganz ohne E-Mail-Registrierung geht es allerdings nicht) zur Verfügung gestellt wird. Der Eval-Methode der Komponenten wird ein beliebiger PowerShell-Befehl übergeben. Weitere Infos gibt es hier. Der Downloadlink ist http://www.primaltools.com/downloads/communitytools/.

Schreibe einen Kommentar

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