Kategorieauswahl

COM

COM Objecte in der Powershell

Powershell kann ja bekanntlich auf 3 Objektnamensräume zugreifen: WMI,.NET und COM.

Mit WMI ist das recht simpel:

get-wmiobject -list

gibt eine Liste mit allen in root\CimV2 (der Hautnamesraum – andere können Sie mit dem Parameter -namespace Namespacename natürlich auch abrufen) enthaltenen Klassen aus. Mit

$a=get-wmiobject win32_logicaldisk

z.B. können Sie sich dann die Logischen Datenträger in die Variable $a holen und mit einer Weiterleitung in Form von

$a | select *

herausfinden, wie die aktuellen Werte aussehen. Mit

$a | gm

sehen Sie natürlich auch die zur Verfügung stehenden Methoden.

Bei COM-Klassen ist dies nicht ganz so offensichtlich. Eine Auflistung der auf dem jeweiligen PC zur Verfügung stehenden COM-Klassen erhalten Sie mit:

ls REGISTRY::HKEY_CLASSES_ROOT\CLSID -include PROGID -recurse | foreach {$_.GetValue("")}

Das dauert ein Weilchen und hängt ab und zu ein bisschen, denn das sind nicht nur 2 ;-). Wenn Sie mögen können Sie sich auch dass natürlich gerne in eine Variable schreiben statt es auf dem Bildschirm auszugeben. Auch diese Objekte können Sie natürlich mit gm bzw get-member auseinandernehmen. Auf aktuellen Maschinen sollte dort z.B. auch SAPI.SpVoice zu finden sein. Mit

$sprecher=new-object -comobject SAPI.SpVoice
$sprecher.Speak('Good Morning')
kann Ihnen die liebe Anna einen zarten Weckruf ins Ohr flüstern. Sie können natürlich auch statt direkt Text (wie Good Morning) einzutippen auch einfach eine Variable in die Klammern schreiben ($sprecher.speak($vorzulesendertext)), welchen den vorzulesenden Text enthält. Auch hier werden Sie mit
$sprecher | gm

wieder herausfinden, dass Sie das Sprachtempo oder den Sprecher (z.B. einen der fließend Deutsch spricht, so wie Anna Englisch – lassen Sie Anna keinen deutschen Text vorlesen 😉 anpassen können. Leider habe ich noch nicht herausgefunden wo man Deutsche Sprecherprofile herbekommt. Ich kann mich nur dunkel erinnern, dass es unter Vista mal über die Updatefunktionen in Ultimate einen Stefan oder eine Steffi gab. Für einen Kommentar hierzu wäre ich dankbar.