Verwenden von PowerShell zum automatisieren der website anmelden und Datei herunterladen
Ich möchte mit der PowerShell zu automatisieren Anmeldung in einer website und das herunterladen einer PDF-Datei. Es gibt jede Menge Beispiele im internet, die zeigen, wie man dies (mit Invoke-WebRequest
, WebClient
, HttpWebRequest
oder InternetExplorer.Application
), aber die meisten nicht benötigen eine login-ersten. Einige zeigen, dass es mit der Anmeldung, aber ich kann nicht Sie zu arbeiten. Ich bin in der Nähe mit InternetExplorer.Application
:
$username = "xxxxx"
$password = "yyyyy"
$url = "https://example.com/login.aspx"
$usernameElementId = "aaaaa"
$passwordElementId = "bbbbb"
$submitButtonElementId = "ccccc"
$ie = New-Object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate($url)
while($ie.ReadyState -ne 4 -or $ie.Busy) {Start-Sleep -m 100}
$ie.Document.getElementById($usernameControlId).value = $username
$ie.Document.getElementById($passwordControlId).value = $password
$ie.Document.getElementById($submitButtonElementId).click()
while($ie.ReadyState -ne 4 -or $ie.Busy) {Start-Sleep -m 100}
Start-Sleep -m 2000
$url = "https://example.com/statements/201607.pdf"
$outFilePath = "C:\Downloads\Statement_201607.pdf"
$ie.Navigate($url)
while($ie.ReadyState -ne 4 -or $ie.Busy) {Start-Sleep -m 100}
# Script works up to this point--the pdf document is shown in IE.
#The file downloaded in the next step is empty.
$ie.Document.body | Out-File -FilePath $outFilePath
Meine Frage: wie bekomme ich das PDF-Dokument heruntergeladen werden in dem letzten Schritt des Skripts?
Habe ich versucht, das zu tun diese gleiche Aufgabe mit WebClient
und Invoke-WebRequest
, aber ich bekomme immer Fehler, wegen der Authentifizierung Stück. Ich habe versucht, die Erfassung der cookies nach der Anmeldung und übergeben Sie Sie mit dem nächsten Wunsch, aber nichts. Wenn jemand ein funktionierendes Beispiel, das mit anderen Mitteln, bin ich alle Ohren. In der Tat ist meine Vorliebe wäre zu vermeiden, die Automatisierung von IE, wenn möglich, aber ich nehme jede funktionierende Lösung.
- In der Theorie ist so einfach wie
Invoke-WebRequest -Uri $pdfuri -Credential $cred -OutFile $outpath
, ich benutze das die ganze Zeit, aber es ist möglich, die website nicht einloggen in diese Weise. - Ich habe gesehen, dass, aber wie erstelle ich die
$cred
Objekt? Beachten Sie, dass ich der Anmeldung zu einer externen website. Dies ist nicht eine Active Directory-Anmeldung oder die remote-server eine Anmeldung mit AD-Anmeldeinformationen. Ich würde lieben, es zu tun mitInvoke-WebRequest
wenn ich die Anmeldeinformationen arbeiten. - Sie können es als Erster test, dass es funktionieren wird mit der Beispiel-Website. Mit dem unset variable $cred wird die Eingabeaufforderung für Anmeldeinformationen. Es ist zwar ein standard-windows-Anmeldeinformationen auffordern, die gleiche Methode wird Häufig verwendet, für Dinge, die nicht im Bereich der AD-oder auch windows-logins.
- Es gibt ein paar Möglichkeiten zum erstellen einer cred-Objekt, Sie können sogar ersetzen Sie es mit dem Benutzernamen und nach einem Kennwort gefragt, empfehlen googeln
pscredential
für Optionen. Blick in den IE-Pfad, Aussehen nicht möglich. Wenn Sie eine PDF öffnen, es eigentlich nur läuft ein plugin, das so zu zeigen ja der Körper leer oder null sein. und es gibt nur eine Möglichkeit, sich auf ein "speichern unter" auf einen link, aber es ist echt chaotisch... Beinhaltet die Simulation von Tastatureingaben, blegh.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Idealerweise würden Sie in der Lage sein zu verwenden
Invoke-WebRequest
wie Sie gesagt haben, aber dies hängt wirklich davon ab, wie die website aufgebaut. Wenn es nur das Abfragen einer Datenbank für die Anmeldung und erzeugen ein cookie aus, dass es wahrscheinlich nicht möglich (aber immer noch einen Versuch Wert):Solls, versuchen Sie es ohne den Credential-parameter an alle, wieder abhängig von der Website, es könnte öffentlich zugänglich sein (gerade nicht erreichbar).
Abhängig von der Website, die Sie haben können einige APIs, um es herunterzuladen, wenden Sie Sie in Ihrem Ermessen:
Und als letzten Ausweg...
Hinweis: bitte deaktivieren Sie im browser-PDF-Viewer, so dass er behandelt es als eine standard-download, in IE11 kann dies schwierig sein, da es gelungen ist durch die PDF-Viewer. Wenn Sie mithilfe von Adobe Reader erscheint, müssen Sie deinstallieren Sie die BrowserIntegration-Funktion. Im Grunde, wenn Sie manuell anklicken, werden Sie wollen, um die "Ausführen oder Speichern?" - option.