PowerShell: IHTML-Interface im DOM-Objekt nicht vorhanden

Manchmal möchte man einen HTML-Quelltext, der in einem String gespeichert ist, parsen. Unter Windows gibt es dafür das im Internet Explorer verankerte DOM (Document Object Model)-Objekt. Da macht man dann einfach

$HTML = New-Object -ComObject "HTMLFile"
$HTML.IHTMLDocument2_write($HTMLinString)

Doch dann stellt man fest, dass der Aufruf nicht auf jeder Windows-Instanz funktioniert, speziell scheitert er gern auf Servern. Der Grund dafür ist eine zusätzliche MSHTML-Bibliothek, welche mit Office mit installiert wird. Zu finden unter „C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll“, kann sie ohne eine Installation auf das gewünschte Zielsystem kopiert und anschließend mit

Add-Type -Path "C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll

in die laufende Sitzung eingebunden werden. Der Pfad muss dafür nicht mit dem Originalen übereinstimmen.
Happy parsing!

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.