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.
Dies sind die Fehlermeldungen:
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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 220348
Url: https://administrator.de/contentid/220348
Printed on: April 25, 2024 at 22:04 o'clock
12 Comments
Latest comment
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
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
füge mal in Zeile 20 deines Scripts noch eine zusätzliche Pause ein.
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...
sleep(2)
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...
OK, ändere mal die URL auf folgende:
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:
Wenn nicht, was ich nicht glauben kann, versuch das selbe mal mit einem VBS-Script umzusetzen:
Grüße Uwe
https://accounts.google.com/ServiceLogin?service=mail
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()
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