none
Script Abarbeitung auf 2 Rechnern unterschiedlich RRS feed

  • Frage

  • Hallo Powershell-Gemeinde,

    ich habe folgendes Problem.

    Ich habe ein Script geschrieben, mit der ich eine Webseite überwache. D.h. IE Starten, Webseite aufrufen, Benutzername/Kennwort übergeben usw.

    Dazu schreibe ich unter anderem folgende Variable:

    $tb1 = $ie.document.body.Innertext

    wenn ich das Script auf meinem Rechner laufen lasse, funktioniert das Script auch perfekt und die Variable $tb1 wird entsprechend gesetzt.

    Wenn ich das Script auf dem PC meines Kollegen laufen lasse, dann wird diese Variable nicht geschrieben. Unter $ie.document gibt es ganz viel nur kein body und demzufolge auch kein Innertext.

    Wodurch könnte es kommen, das sich das Script hier so unterschiedlich verhält?

    Gruß

    Tobias

    • Typ geändert Alex Pitulice Montag, 9. Juli 2012 07:24 Warten auf Feedback
    • Typ geändert Denniver ReiningMVP, Moderator Montag, 9. Juli 2012 13:48 Alex bitte mach das doch nicht immer. Das ist und bleibt ne Frage, auch wenn mal ne Zeitlang keiner drauf antwortet. :)
    Montag, 2. Juli 2012 09:11

Antworten

  • Hallo Alex,

    prinzipiell ist das Thema schon noch aktuell, das problem besteht weiterhin. Aber ich glaube es ist kein"Fehler" der durch fehlerhafte Programmierung kommt, sondern irgendwie auf die Systemumgebung der Clients zurückzuführen ist.  Ich werde das demnächst nochmal auf virtuellen FATClients ausprobieren und dann weitersehen.

    Ich denke, wir können aber den Thread als abgeschlossen markieren.

    Gruss, Tobi

    • Als Antwort markiert Alex Pitulice Donnerstag, 19. Juli 2012 07:45
    Freitag, 13. Juli 2012 18:15

Alle Antworten

  • >>>> Wodurch könnte es kommen, das sich das Script hier so unterschiedlich verhält?
    Verschieden Internet Explorer Versionen, Verschiedene Betriebsysteme oder verschiedene Sicherheitseinstellungen!

    Grundsätzlich ist das Automatisieren vom Internet Explorer von niemanden gewollt da es sehr sicherheits kritisch ist und wie du schon siehst meist schief geht!

    Probier mal meine Anwort hier:
    http://social.technet.microsoft.com/Forums/de-DE/powershell_de/thread/a1cc617c-f6bc-429f-8c9d-88852f934992


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '


    Montag, 2. Juli 2012 09:20
  • wir haben beide Windows XP SP3 mit dem IE in der gleiche Versionsnummer und sind beide lokale Administratoren auf den PCs.

    Dein Hinweis aus dem anderen Post, es mal mit navigate2 zu versuchen, hat leider nicht das Erhoffte gebracht.

    Ich werde weiter suchen müssen, woran es liegt, Abe kurios ist es schon.

    Danke

    Tobias

    Montag, 2. Juli 2012 11:41
  • Hast du die Ursache zwischenzeitlich gefunden?

    Grüße, Denniver

    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Donnerstag, 5. Juli 2012 12:01
    Moderator
  • Leider bisher noch nicht,

    es wird auf dem 2.Rechner einfach nichts in die Variable geschrieben.

    $ie = new-object -com "InternetExplorer.Application"
    $ie.visible = $true
    
    $ie.navigate("http://google.de")
    $doc = $ie.document
    $t = $doc.body.innertext
    

    Auf Recher 1 habe ich jetzt $t gefüllt, auf Rechner 2 ist $t = $null

    Ich weiß gar nicht wie ich da jetzt ansetzen soll, das skript ist doch so simpel.

    Im Zweifel muss ich diesen Thread hier schließen.

    Gruß

    Tobias

    Donnerstag, 5. Juli 2012 18:01
  • Hallo,

    benutzt du auf beiden Rechnern die gleiche Powershell version entweder 32bit oderr 64bit. ggf. verhalteen sich diese beiden Version auf deinem Rechner unterschiedlich.


    regards Thomas Paetzold visit my blog on: http://sus42.wordpress.com

    Donnerstag, 5. Juli 2012 18:04
  • Versuch mal das hier:

    $ie = new-object -com "InternetExplorer.Application"
    $ie.visible = $true
    $ie.navigate("http://www.google.de")
    sleep 5
    $doc = $ie.document
    $doc.body.innertext
      

    Wenn man IE-document nämlich zu schnell nach dem Aufruf abfragt, ist es noch nicht gefüllt. Wenn das klappt, kannst du die Sekundenangabe hinter sleep soweit reduzieren, das es sicher funktioniert, aber nicht zu lange dauert.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort"


    Donnerstag, 5. Juli 2012 18:33
    Moderator
  • Guten Morgen,

    selbst wenn ich die Zeilen von Hand in die Console eingeben funktioniert es nicht. Auf meinem PC habe ich nach dem

    $ie.navigate("http://www.google.de")

    die notwendigen Variablen. Auf dem PC wo es nicht funktioniert, da fehlen die komplett. Ich guck mir das immer mit PowerGui an, da kann man das ja schön übersichtlich sehen. Und selbst nach 10 Sekunden klappts nicht.

    Das geht doch gar nicht, So ein Mist!

    Gruß, Tobias

    Freitag, 6. Juli 2012 08:21
  • Guckst du auf beiden Rechner mit PowerGUI ?
    Bei mir sind die ausführungen in der ISE under PowerShell.exe schon teilweise unterschiedlich!

    Was ist mit der 32 / 64 Bit frage ?


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '

    Freitag, 6. Juli 2012 10:14
  • Hallo,

    auf beiden Rechnern gucke ich mit PowerGUI. Die Powershell ist bei beiden die 32Bit Version.

    Der Rechner, auf dem es nicht läuft ist generell von der Performance schlechter als mein eigener PC. Aber das hatte ich gehofft wird duch eine entsprechende Pause im Code "korrigiert".

    Gruß

    Tobias

    Montag, 9. Juli 2012 08:07
  • Das mit der Pause ist so eine sache! Die kann man nie per Hand richtig setzen.
    Besser ist es "while busy" zu nehmen!

    $ie = new-object -com internetexplorer.application $ie.visible=$true $ie.navigate2('http://www.google.de')

    while($ie.busy) {sleep -Milliseconds 5} $ie.Document.all | foreach {$_}


    Nimm bitte mal genau den Code, den ich hier geposted habe und führe ihn auf beiden Rechner mit Admistrativen rechten aus !

    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '

    Montag, 9. Juli 2012 08:30
  • das while busy hatte ich vorher auch schon in meinem codeschnipsel drin, hatte aber auch nichts genutzt.

    Auch mit navigate2 habe ich es schon versucht, selbes Ergebnis. Habe aber der Vollständigkeit halber deine Programmzeilen verwendet und mit administrativen Rechten ausgeführt, das Ergebnis ist aber unverändert.

    Wie man im Screenshot sieht, schreibt er ja einige Sachen, z.B. den Titel der Seite, aber den Body z.B. überhaupt nicht.

    Variablenscreenshot

    Montag, 9. Juli 2012 09:36
  • In der Zeile frames steht doch was mit: Ausnahme beim aufrufen ....
    Ich empfehle da Web Debuging
    http://fiddler2.com/fiddler2/
    http://www.powershell.nu/2011/03/14/fiddler/

    Man kann Internetseiten auch mit dem Projekt Watin automatisieren
    http://huddledmasses.org/using-powershell-and-watin-powerwatin/
    http://sev17.com/2009/09/internet-explorer-automation-with-watin/

    Oder mit selenium:
    http://seleniumhq.org/docs/01_introducing_selenium.html
    http://huddledmasses.org/did-you-know-powershell-can-use-selenium/


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '


    Montag, 9. Juli 2012 13:56
  • Hallo Alex,

    prinzipiell ist das Thema schon noch aktuell, das problem besteht weiterhin. Aber ich glaube es ist kein"Fehler" der durch fehlerhafte Programmierung kommt, sondern irgendwie auf die Systemumgebung der Clients zurückzuführen ist.  Ich werde das demnächst nochmal auf virtuellen FATClients ausprobieren und dann weitersehen.

    Ich denke, wir können aber den Thread als abgeschlossen markieren.

    Gruss, Tobi

    • Als Antwort markiert Alex Pitulice Donnerstag, 19. Juli 2012 07:45
    Freitag, 13. Juli 2012 18:15