ramsess 10 Geschrieben 1. Juli 2015 Melden Teilen Geschrieben 1. Juli 2015 Hallo zusammen, ich habe folgendes Problem. Für das weiter Verarbeiten muss ich eine über die Powershell im IE aufgerufen zusammengebaute ssl verschlüsselten URL die angezeigte XML Datei speichern. Mein Script baut die URL korrekt zusammen, die SSL Warnung wird übergangen. Aber ich kann die Seite nicht abspeichern. Das funktionieren Script sieht so aus: $ie = New-Object -ComObject InternetExplorer.Application $ie.Visible = $true $ie.Navigate($url1 + $name + $url2 + $ip + $url3) while( $ie.busy){Start-Sleep 1} $secLink = $ie.Document.getElementsByTagName('A') | Where-Object {$_.innerText -eq 'Laden dieser Website fortsetzen (nicht empfohlen).'} $secLink.click() Hat jemand eine Idee - ich stecke an dieser Stelle schlichtweg fest. Schon mal Danke im Voraus. Gruss r. Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 1. Juli 2015 Melden Teilen Geschrieben 1. Juli 2015 Wieso triggerst du den IE um eine Http Anfrage abzusetzen? Wieso setzt du diese nicht selbst ab? Zitieren Link zu diesem Kommentar
ramsess 10 Geschrieben 2. Juli 2015 Autor Melden Teilen Geschrieben 2. Juli 2015 Hallo Dukel, Danke für Deine Antwort. Um Deine Frage zu beantworten muss ich etwas ausholen. Ziel des Scripts ist es, Citrix Server beim Start in die Überwachung automatisch zu übernehmen. Als Überwachung wird Naigios (SM-BOX falls das jemand kennt) eingesetzt. Diese ist über die REST Schnittstelle bedienbar indem man im IE eine URL aufruft. Ein Aufruf über einen anderen Webbrowser ist nach meiner Kenntnis nicht möglich. Die URL sieht wie folgt aus: https://IP-Naigos/REST/nagios/addhost/apikey/useridentifer/host_name/$name/address/$ip/template/template-name Die statischen Werte iiegen in Variablen die ich hier jetzt nicht aufgeführt habe. Das zusammenbauen der URL soll dynamisch erfolgen unabhängig auf welchem Host das Script ausgeführt wird, indem der Hostname und die IP ausgelesen werden und in eine Variable geschrieben wird. Mit der Übergabe der URL und dem Übergehen der Zertifikatsabfrage wird der Eintrag vorgenommen. Als Rückgabe wird eine xml Datei geliefert die ausgewertet werden soll um ein Log zu schreiben ob alles geklappt hat. Die Rückgabe sieht wie folgt aus: <statusObject> <stautsCode>0</statusCode> <message>ok</message> </statusObject> Wie gesagt bis zu diesem Punkt habe ich das ganze fertig. Meine Überlegung ist es den Wert <message> auszuwerten und das Ergebnis in ein Log zu schrieben, damit ein Admin nachvollziehen kann ob der Eintrag erfolgt ist. Eine andere Möglichkeit zur Auswertung als speichern der Datei habe ich bisher nicht gefunden. Man kann natürlich auch ohne dem Log das ganze schon benutzen – aber wenn die REST Schnittstelle einen Fehler liefert sehe ich das nur dann wenn ich das Script persönlich ausführe. Ziel ist es aber das ganze automatisch ohne Zutun eines Admins laufen zu lassen. In der weiteren Überlegung soll vorab geprüft werden ob der Server bereits in Nagios erfasst ist und gegebenenfalls automatisch das Skript ohne Abarbeitung beenden. Eine IF Abfrage und dem Ersetzen von addhost durch gethost/$name sollte dieses Problem dann lösen. Aber auch hier muss ich die zugegebene xml Datei auswerten. Gibt es Deiner Meinung nach einen anderen Weg das Problem zu lösen? Gruß r. Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 2. Juli 2015 Melden Teilen Geschrieben 2. Juli 2015 Das mit dem Webseite aufrufen und xml auslesen ist ja kein Problem. Ich meinte nur, dass du nicht den IE steuern musst um eine Webseite abzurufen sondern dies direkt machen kannst. Dein Powershell Script soll die HTTP Anfrage statt dem IE stellen. Zitieren Link zu diesem Kommentar
ramsess 10 Geschrieben 2. Juli 2015 Autor Melden Teilen Geschrieben 2. Juli 2015 Wie müsste ich das machen? Und wie übergehe ich dann ein Zertifikatsfehler? Zitieren Link zu diesem Kommentar
testperson 1.708 Geschrieben 2. Juli 2015 Melden Teilen Geschrieben 2. Juli 2015 Hi, das sollte mit Invoke-WebRequest funktionieren: https://technet.microsoft.com/en-us/library/hh849901.aspx Gruß Jan Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 2. Juli 2015 Melden Teilen Geschrieben 2. Juli 2015 Entweder invoke-WebRequest oder .net http Request: https://msdn.microsoft.com/en-us/library/system.web.httprequest%28v=vs.110%29.aspx Den Zertifikatsfehler umgehst du, indem du das Zertifikat richtig machst, dass kein Fehler kommt. Ein Workaround ist, das Zertifikat zu ignorieren: https://newyear2006.wordpress.com/2014/07/26/bei-powershell-ssltls-zertifikate-prfung-einfach-ignorieren/ Zitieren Link zu diesem Kommentar
ramsess 10 Geschrieben 2. Juli 2015 Autor Melden Teilen Geschrieben 2. Juli 2015 (bearbeitet) OK dann baue ich das ganze mal um und melde mich danach noch mal ob es funktioniert hat. Update Wenn ich das ganze richtig verstehe ist invoke-WebRequest für die Powershell ab Version 3 verfügbar. Wir haben die Version 2 im Einsatz und das kann nicht geändert werden. Ebensowenig kann keine aktuelle Version .Net eingespielt werden. Derzeit setzen wir version 3.0 ein. Soweit ich das sehe sind in dieser Konstallation der Einsatz Invoke-WebRequest bzw. dem WEB Client über dotNet nicht möglich. Oder sehe ich das falsch? bearbeitet 2. Juli 2015 von ramsess Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 2. Juli 2015 Melden Teilen Geschrieben 2. Juli 2015 Den dot.net Webrequest kannst du auch mit kleineren Dot.Net Versionen ausführen. Du kannst in der MSDN Hilfe die Version umstellen. Zitieren Link zu diesem Kommentar
ramsess 10 Geschrieben 2. Juli 2015 Autor Melden Teilen Geschrieben 2. Juli 2015 Mal sehen was ich da bis morgen noch machen kann. Danke erst mal für die Hilfe. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.