itfrischling
Goto Top

Gmail Login-Script -Powershell- hat Probleme mit Methoden

Hallo,

Seit 1.8.2013 beschäftige ich mich nun beruflich mit der IT. Ich hab eine Ausbildung zum Fachinformatiker - Systemintegration gestartet.
Soweit macht mir das auch viel Spaß und ich entwickle weitere Interessen. Eine Davon ist Powershell. Hier bin ich ein Einsteiger und probiere
im Moment nur aus und schaue mir Quellcodes an, welche ich dann versuche nachzuvollziehen. Und hier ist das Problem. Ich bin auf einen
Gmail-Login Script gestoßen und habe dort eine Passwort Abfrage eingefügt. Auf der Arbeit funktionierte das super. Daheim nicht mehr.

$url = "http://gmail.com"  

$username="******.*****@gmail.com"  

$password=Read-Host -Prompt "Passwort eingeben"  

$ie = New-Object -com internetexplorer.application;

$ie.visible = $true;

$ie.navigate($url);

while ($ie.Busy -eq $true)

{

    Start-Sleep -Milliseconds 1000;

}

$ie.Document.getElementById("email").value = $username  

$ie.Document.getElementByID("passwd").value=$password  

$ie.Document.getElementById("signin").Click();   

Dies sind die Fehlermeldungen:
Fehler beim Aufrufen der Methode, da [System.__ComObject] keine Methode mit dem Namen "getElementById" enthält.  
In C:\PowerShellKram\GmailLogin.ps1:21 Zeichen:1
+ $ie.Document.getElementById("email").value = $username  
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) , RuntimeException
    + FullyQualifiedErrorId : MethodNotFound
 
Fehler beim Aufrufen der Methode, da [System.__ComObject] keine Methode mit dem Namen "getElementByID" enthält.  
In C:\PowerShellKram\GmailLogin.ps1:23 Zeichen:1
+ $ie.Document.getElementByID("passwd").value=$password  
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) , RuntimeException
    + FullyQualifiedErrorId : MethodNotFound
 
Fehler beim Aufrufen der Methode, da [System.__ComObject] keine Methode mit dem Namen "getElementById" enthält.  
In C:\PowerShellKram\GmailLogin.ps1:25 Zeichen:1
+ $ie.Document.getElementById("signin").Click();  
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) , RuntimeException
    + FullyQualifiedErrorId : MethodNotFound


Meine Frage wäre nun: Was stimmt hier nicht mehr? Ich benutze Internet Explorer 10. Mein Betriebssystem ist Windows7 64Bit.


Ich bedanke mich schonmal für eure Bemühungen mir zu helfen.

mit freundlichen Grüßen

ITFrischling

Content-Key: 220348

Url: https://administrator.de/contentid/220348

Ausgedruckt am: 29.03.2024 um 08:03 Uhr

Mitglied: colinardo
colinardo 24.10.2013 aktualisiert um 21:08:02 Uhr
Goto Top
Hallo ITFrischling, Willkommen im Forum!
zuerst mal würde ich sagen das du dich für eine Methode entscheiden solltest, wie du deine Script-Zeilen beendest (mit Semikolon oder ohne). Ein Semikolon ist nicht nötig wenn du jeden Befehl in eine neue Zeile schreibst. Wenn du aber mehrere Befehle in eine Zeile schreiben willst kannst du dies jeweils getrennt mit einem Semikolon tun.

Dies ist in deinem Script aber nicht der Fehler, sondern dies könnte eine Eigenart des InternetExplorers sein wenn der ProtectedMode in der Internet-Zone aktiv ist, siehe dazu auch folgenden Beitrag.

Starte dein Script alternativ mal in einer Powershell mit Adminrechten, dann sollte es eigentlich laufen. Hier läuft es zumindest problemlos...

Grüße Uwe
Mitglied: ITFrischling
ITFrischling 24.10.2013 um 21:06:39 Uhr
Goto Top
Hey colinardo,

Ich hatte es mit den Adminrechten bereits versucht jedoch entstand auch dort der gleiche Fehler...Danke für deine Hilfe


mit freundlichen Grüßen

ITFrischling
Mitglied: colinardo
colinardo 24.10.2013 aktualisiert um 21:14:15 Uhr
Goto Top
Fahr mal ein Update auf Powershell 3.0 auf deinem Windows 7 ... dann sehen wir weiter.
Grüße Uwe
p.s. die Eingabe von
$PSVersionTable.PSVersion
in der Powershell zeigt dir die aktuell installierte Version an (PSVersion)
Mitglied: ITFrischling
ITFrischling 24.10.2013 um 21:24:33 Uhr
Goto Top
Major  Minor  Build  Revision
-----      -----     -----     --------
 3          0       -1         -1


Powershellversion 3.0 hatte ich bereits. Habe jetzt noch einmal die Benutzerkontesteuerung komplett heruntergefahren aber wieder der gleiche Fehler.
Mitglied: colinardo
colinardo 25.10.2013 um 00:16:39 Uhr
Goto Top
füge mal in Zeile 20 deines Scripts noch eine zusätzliche Pause ein.
sleep(2)
Die Fehlermeldungen sagen eigentlich aus das das COM-Objekt noch kein DOM erzeugt hat und damit auch die Methoden fehlschlagen.
Mir kommt das gerade in den Sinn weil ich vor kurzem ein ähnliches Phänomen mit dem IE bei der Programmierung mit AutoIT hatte, und da hat eine zusätzliche Pause die Lösung gebracht.

probier's mal aus...
Mitglied: ITFrischling
ITFrischling 25.10.2013 um 06:23:31 Uhr
Goto Top
Hey Ich habe es mal ausprobiert. Auch dies hat leider nicht geholfen. Das komische ist ja auf der Arbeit funktionierte es.
Bei mir Daheim startet er nur den IE und leitet mich auf Gmail. Danach passiert nichts mehr.

Grüße

ITFrischling
Mitglied: ITFrischling
ITFrischling 28.10.2013 um 09:56:15 Uhr
Goto Top
Ich habe noch ein paar updates gezogen... hat leider auch nicht geholfen.
Ergo wir sind immer noch bei null...


mit freundlichen Grüßen

ITFrischling
Mitglied: colinardo
colinardo 28.10.2013, aktualisiert am 15.01.2014 um 12:38:14 Uhr
Goto Top
OK, ändere mal die URL auf folgende:
https://accounts.google.com/ServiceLogin?service=mail
und dann machst du in den folgenden Zeilen aus dem großen "D" bei Document ein kleines "d". Bei einer dieser Zeilen war außerdem beim getElementById das letzte "D" groß geschrieben. Das kann zu diesen Fehlern führen ! Es sind ja im Grunde JavaScript-Funktionen und JavaScript ist ja bekanntlich Case-Sensitive.
Im ganzen sollte das Script dann folgendermaßen aussehen, dann sollte es funktionieren:
$url = "https://accounts.google.com/ServiceLogin?service=mail"  
$username="******.*****@gmail.com"  
$password=Read-Host -Prompt "Passwort eingeben"  
$ie = New-Object -com InternetExplorer.Application
$ie.visible = $true
$ie.navigate($url)
while ($ie.Busy -eq $true)
{
    sleep(1)
}
$ie.document.getElementById("Email").value = $username  
$ie.document.getElementById("Passwd").value = $password  
$ie.document.getElementById("signIn").click()  
Wenn nicht, was ich nicht glauben kann, versuch das selbe mal mit einem VBS-Script umzusetzen:
url = "https://accounts.google.com/ServiceLogin?service=mail"  
username = "******.*****@gmail.com"  
password=InputBox("Passwort eingeben:")  
Set ie = CreateObject("internetexplorer.application")  
ie.visible = True
ie.Navigate(url)
while ie.Busy
Wend
ie.document.getElementById("Email").value = username  
ie.document.getElementById("Passwd").value = password  
ie.document.getElementById("signIn").click()  

Grüße Uwe
Mitglied: ITFrischling
ITFrischling 28.10.2013 um 10:28:38 Uhr
Goto Top
Hey,

Danke für diesen Rat...Ich werde es später direkt einmal umsetzen. Das komische ist, das Script läuft öffnet auch die URL aber dann trägt es nichts in die Eingabefelder ein und der Fehler kommt. Wie das jetzt mit dem Script läuft was du mir gegeben hast kann ich erst später sagen, da ich auf der Arbeit bin. Ich danke Dir und werde später "Meldung" machen.


mit freundlichen Grüßen

ITFrischling
Mitglied: ITFrischling
ITFrischling 28.10.2013 um 19:56:26 Uhr
Goto Top
Moin,

Ich habs jetzt mal getestet es hatte jedoch nichts mit groß/kleinschreibung zu tun.
Ich hab ein wenig geguckt was eigentlich benötigt wird um System. Comobject aufzulösen.
Man glaubt es kaum man braucht die Bibliothek von Visual Studio... Ergo Visual Studio express
runterladen. Und nun funktioniert es. Ich bedanke mich trotzdem VIELMALS bei Dir für die Hilfe.
Ich hoffe ich kann mit der Lösung hier helfen.


mit freundlichen Grüßen

ITFrischling
Mitglied: colinardo
colinardo 28.10.2013 um 20:19:32 Uhr
Goto Top
Kann nicht sein, denn hier geht es auf einem jungfrâulichen Windows 7 direkt ohne Zusätze .... Denke das hatte eventuell was mit deinem installierten .NET Framework zu tun, da Powershell darauf aufsetzt.
Naja, wenns jetzt geht weiterhin viel Erfolg beim lernen von Powershell face-wink

Grüße Uwe
Mitglied: ITFrischling
ITFrischling 29.10.2013 um 06:33:36 Uhr
Goto Top
Hm... Ist ja komisch.. naja gibt eben sehr komische Fehler egal in welchen Bereichen. Ich weis nur, dass es jetzt seitdem ich Visual Studio installiert habe funktioniert. .NET Framework hatte ich vorher schon da ich mir durchaus bewusst war, dass Powershell darauf aufsetzt. Naja ich bin mir sicher ich stoße noch oft genug auf lustige Fehler in meinem "IT-Leben" Danke für die Hilfe.


Viele Grüße

ITFrischling