Benutzer mit den meisten Antworten
IE document.links property fehlt???

Frage
-
Hi,
ich habe ein 64-Bit Win7 System auf dem es ein PS Script gibt, welches auf die document.links property des IE Objects angewiesen ist. Jetzt möchte ich das Script auf ein 32-Bit Win7 System ausführen, doch die documents.link property fehlt. Beide haben die neusten Updates, beides sind Professional Versionen (eines is N (Mediaplayer)) und beide haben die selbe Version/Build des IEs.
Ich habe es auch auf einem WinXP System mit SP3 probiert. Auch dort geht es nicht.
Ich hoffe ihr könnt mir helfen. Es ist mir ein Rätsel.
Antworten
-
Es scheint ein Problem mit 32-Bit Systemen zu sein. Ich bin Systemadministrator und habe es heute auf allen Systemen probiert, wo man mich raufgelassen hat. Es funktioniert nur unter Win7 64-Bit.
Die andere Systeme laden aus irgendeinem Grund die "mshtml.HTMLDocumentClass" nicht.
Ist (mir) aber egal weil es auch so klappt:
$InternetExplorer.Document.getElementsByTagName("a") | select-object href
- Als Antwort markiert FMHGH Mittwoch, 16. Februar 2011 15:27
Alle Antworten
-
Ui, das ist fast 500 Zeilen lang. Aber als Beispiel:
$InternetExplorer = New-Object -com InternetExplorer.Application $InternetExplorer.Visible = $True $InternetExplorer.Navigate("www.google.de") $InternetExplorer.Document.links | select-object href
Ergebniss: eine Liste mit links
href
----
http://www.google.de/imghp?hl=de&tab=wi
http://video.google.de/?hl=de&tab=wv
...Und "$InternetExplorer.Document.links" gibt es bei mir nur auf dem 64-Bit Win7 PC. Wenn ich die Befehle auf den anderen PCs ausführe, passiert nichts.
-
Funktioniert bei mir sowohl bei einem W7 32bit als auch 64bit wunderbar. Der Trick ist, vor dem Abruf der Links eine kleine Pause einzufügen. Ich nehme an, der IE benötigt einen Moment um die Seite zu laden, die Abfrage erfolgt aber schon voher und scheitert dann manchmal, je nach System und Netzgeschwindigkeit.
$InternetExplorer = New-Object -com InternetExplorer.Application $InternetExplorer.Visible = $True $InternetExplorer.Navigate("www.google.de") sleep 5 $InternetExplorer.Document.links | select-object href
Ich habe mal 5 Sekunden eingefügt, das ist recht lang. Musst du je nach System anpassen.
Grüße, Denniver
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Dienstag, 15. Februar 2011 21:05
-
Mach ich:
function WaitForStatusReady{ do{ if($InternetExplorer.StatusText -ne $Temp_StatusText){ $Temp_StatusText = $InternetExplorer.StatusText if(!($Temp_StatusText)){ $Temp_StatusText = " " } if($InternetExplorer.busy -eq $True){ write-progress -Activity ("Busy - "+$InternetExplorer.LocationURL) -Status $Temp_StatusText -ID 1 } else{ write-progress -Activity $InternetExplorer.LocationURL -Status $Temp_StatusText -ID 1 } } }while($InternetExplorer.ReadyState -ne 4) $Host.UI.RawUI.ForegroundColor = "green" write-host ("URL: "+$InternetExplorer.LocationURL) MySleep }
-
Das ist in der Tat kurios. Ich habe es jetzt zusätzlich auf zwei W7 32bit Systemen getestet, auf dem einen geht es und auf dem anderen nicht. Letzteres ist allerdings eine lange nicht mehr gepachte VM. Auf einem Server 2008 geht es darüber hinaus aber auch nicht.
Ich kann mir das nur so erklären, das es trotzdem bei einer zugehörigen dll einen Versionsunterschied gibt, oder sich schlicht um einen Bug handelt. Daher kann ich dir nur empfehlen das nochmal im IE-Forum zu posten oder direkt einen Bug zu melden .
Als kurzfristiger Workaround fällt mir spontan nur ein, die Links direkt als Text aus der html-Datei zu extrahieren. Wenn es sich um eine fehlerfreie HTML-Datei mit geschlossenen Tags handelt, ginge auch XML. Ist nicht so elegant, sollte aber funktionieren.
Grüße, Denniver
-
Es scheint ein Problem mit 32-Bit Systemen zu sein. Ich bin Systemadministrator und habe es heute auf allen Systemen probiert, wo man mich raufgelassen hat. Es funktioniert nur unter Win7 64-Bit.
Die andere Systeme laden aus irgendeinem Grund die "mshtml.HTMLDocumentClass" nicht.
Ist (mir) aber egal weil es auch so klappt:
$InternetExplorer.Document.getElementsByTagName("a") | select-object href
- Als Antwort markiert FMHGH Mittwoch, 16. Februar 2011 15:27