Infos aus Browser-Sitzungen holen

24. November 2009

Die Suche nach Problemlösungen im Internet gehört zu den täglichen Aufgaben eines Administrators. Dabei erweist es sich als hilfreich, wenn man sich einige URLs für spätere Zugriffe abspeichern kann, die man sich im Internet Explorer angesehen hat. Sicher gibt es dazu die Möglichkeit, einzelne Tabs – Reiter – im IE 7.0 (und neuere Versionen) zu speichern und dann wieder zu öffnen. Doch dabei hat man nur sehr wenig Portabilität und zudem lässt sich diese Information nicht als eine Referenz speichern, um sie irgendwann später wieder durchzuarbeiten. Mit einigen Powershell-Skripten lassen sich aber diese Browser-Probleme lösen.

Bild 1. So holt das erste Skript die URLs von allen Webseiten aus einer geöffneten Browser-Session ab.

Das erste Skript – es heißt Get-IEUrl.ps1 – erlaubt das schnelle Abfragen von Informationen über die aktuelle Browser-Session, damit man diese Infos später wieder verwenden kann. Wenn man dieses Skript ohne die Angabe von Argumenten aufruft, wird es eine Liste mit den URLs aller geöffneten Webseiten liefern. Mit Copy & Paste lassen sich diese URLs dann beliebig weiter verwenden. Es besteht allerdings auch die Option, diese URLs in eine Datei zu senden. Dazu ist das folgende Kommando nötig:

Get-IEUrl | Set-Content sites.txt

Das Tolle am Ablegen der URLs in einer Datei (sites.txt) ist die Option, diese Datei dann von einem zweiten Skript verwenden zu lassen. Dieses zweite Skript trägt die Bezeichnung Start-IEUrl.ps1 und ist in der Lage, diesen Satz an Webseiten wieder hoch zu bringen. Dazu ist der folgende Befehl nötig:

Get-Content sites.txt | Start-IEUrl

Das erneute Starten der URLs auf diese weise ist vielleicht nicht unbedingt das, was man ursprünglich hatte: Jede URL wird in einem eigenen IE-Fenster starten, selbst wenn man die Tabs aktiviert hat. Aber es liefert die ursprünglich gewollten Webseiten.
Das Skript Get-IEUrl.ps1 kann drei Argumente übergeben bekommen:

  • -Location,
  • -Content und
  • -Full.
Bild 2. Die URLs zusammen mit den Titeln der Webseiten lassen ebenfalls ermitteln Mit einem zusätzlichen Formatieren wird die Information übersichtlich dargestellt.

Kommt das erste Argument zum Einsatz wie zum Beispiel im folgenden Befehl

Get-IEUrl –Location

Dann wird eine Liste mit den Titeln aller Webseiten zusammen mit ihren URLs geliefert. Das ist nützlich, wenn man sich die URLs als Referenzen für spätere Arbeiten aufheben möchte. Diese Ausgabe lässt sich dann noch mit dem Cmdlet Format-List sortieren, so dass die Darstellung übersichtlicher wird.
Beim Einsatz des Argument -Content etwa in der Form

Get-IEUrl -Content

wird der Titel, die URL sowie der Inhalt (allerdings nur der Text) jeder offenen Webseite ausgegeben. Diese Ausgabe lässt sich auf dem Bildschirm ansehen, doch üblicherweise wird es Verwendung finden, um die Informationen von Webseiten in eine Textdatei zu speichern, so dass man sie später offline verwenden kann.
Und zu guter Letzt gibt es noch die Option mit -Full. Das Kommando sieht dann in etwa wie folgt aus:

$ies = Get-IEUrl -Full

Das Skript get-IEUrl.ps1 liefert ein IE-Objekt für alle offenen Webseiten und legt sie in der Variablen $ies ab. Damit wird das Skript zum Ausgangspunkt, um andere Aufgaben im IE auszuführen. Was man machen kann, hängt zum großen Teil davon ab, wie gut man den IE kennt. Hier folgen einige einfachere Beispiele:
Der folgende Code verwendet die IE-Objekte, die in der Variablen $ies liegen, um die offenen Webseiten alle 60 Sekunden neu zu laden. Das wird solange ausgeführt, bis der Administrator ein Break-Kommando erteilt (das ist Ctrl+C in der Powershell):

while($true){
  sleep 60; $ies |
  %{$_.Refresh()}}

Möchte der Administrator alle in der Variablen $ies liegenden IE-Webseiten ausdrucken, dann eignet sich das folgende Kommando für diese Aufgabe:

$ies | %{$_.ExecWB(6,1)}

Dabei wird für jede Webseite ein eigener Druckdialog erscheinen. Es lässt sich aber auch der Speichern Untern Dialog für jede Webseite aus $ies starten – und zwar mit dem folgenden Befehl:

$ies | %{$_.ExecWB(4,1)}

Die beiden hier gezeigten Skripts – get-IEUrl.ps1 und Start-IEUrl.ps1 – nutzen nur einen Bruchteil der Möglichkeiten, die der IE zusammen mit seinem Automation Model bietet. Wer mehr Dinge ausprobieren möchte und dazu den IE über die Powershell ansprechen will, der sollte get-IEUrl.ps1 mit dem Argument -Full benutzen. Danach kann man das Get-Member-Cmdlet für die zurückgelieferten IE-Instanzen verwenden. Mehr Informationen zum Objektmodell des IE gibt die MSDN-Website  „The Internet Explorer Scripting Object Model“.

Alex K. Angelopoulos/Rainer Huttenloher

Lesen Sie auch