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 mit Invoke-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.
InformationsquelleAutor neizan | 2016-08-10
Schreibe einen Kommentar