none
Security Alert des Internetexplorers bestätigen RRS feed

  • Frage

  • Hallo!

    Ich habe ein Script geschrieben, welches ein automatisches Login auf einer Webseite durchführt und dann eine entsprechende Meldung ausgibt. Leider habe ich ein Problem, dass der Internetexplorer immer ein Security Alert ausgibt wenn ich das Script ausführe und der IE vom Script zur Logout url geleitet wird. Interessanterweise geschieht dies aber nur wenn ich den Login-Versuch per Script ausführe und nicht manuell. Wie kann ich dieses Popup abgreifen und bestätigen?

    Grüße Georg

    function getPassword {
    
    	$pswdSec = Get-Content "C:\nrpe\esourcepsw.txt" | ConvertTo-SecureString -ErrorAction Stop  
    	$bPswd = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pswdSec)
    	$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bPswd)
    	return $password
    	
    	
    }
    
    
    function loginIE
    {
    	$ie = New-Object -com "InternetExplorer.Application"
    	$ie.Navigate("http://localhost/Bao/login/loginroot.asp?LangISO=DE")
    	$ie.visible = $true
    	do { sleep 5 }
    	while ( $ie.busy )
    	$doc = $ie.document
    	if ($ie.document.documentelement.innerText.Contains('Willkommen') -eq "True") {
    		$user = $doc.getElementById("UserID")
    		$password = $doc.getElementById("Password")
    		$submit = $doc.getElementById("B1")
    		$user.value = "nutzername"
    		#$password.value = getPassword
    		$password.value = "passwort"
    		$submit.Click();
    		do {sleep 2} until (-not ($ie.Busy)) 
    		#$ie.document.documentelement.innerText
    		if ($ie.document.documentelement.innerText.Contains('OrgUnit') -eq "True") {
    			$errorcode=0
    			Write-Host "OK: Seite vorhanden und Login erfolgreich |"	
    			$ie.Navigate("https://www.t-systems-esourcing.com/bao/Login/Logout.asp")#Hier kommt es zum Sicherheitsalarm des IE
    			do { sleep 1 }
    			while ( $ie.busy )
    			$doc = $ie.document
    			#$ie.document.documentelement.innerText
    			$logout = $doc.getElementById("butConfirmLogoff")
    			$logout.Click();
    			do {sleep 2} until (-not ($ie.Busy)) 
    			$ie.Quit();
    			exit $errorcode
    			
    		} else {
    			$errorcode=2
    			Write-Host "ERROR: KEIN Login moeglich! Seite ist online |"
    			$ie.Quit();
    			exit $errorcode
    		}
    	}else {
    		$errorcode=2
    		Write-Host "ERROR: Seite ist nicht online! |"
    		$ie.Quit();
    		exit $errorcode
    		
    	}
    	
    }
    loginIE
    
    

    Freitag, 19. Oktober 2012 09:42

Antworten

Alle Antworten

  • Versuchs mal mit der navigate2:
    http://social.technet.microsoft.com/Forums/de-CH/powershell_de/thread/a1cc617c-f6bc-429f-8c9d-88852f934992

    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Freitag, 19. Oktober 2012 11:57
  • Wer hat denn diesen Thread auf den Typ Diskusion geändert ?

    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Montag, 22. Oktober 2012 08:31
  • Nur kurz, zur Beantwortung der Frage von Peter:

    Changed TypeAlex Pitulice<abbr class="affil">Microsoft Contingent Staff, Owner</abbr>1 hour 20 minutes agoWarten auf Testen


    The following is my signature:

    Powershell Programmer & Advanced Lua Programmer

    Location: Switzerland

    Beside that, whenever you see a reply, you think is helpful, click "Alternate TextVote As Helpful"! And whenever you see a reply being an answer to the mainquestion of the thread, click "Alternate TextMark As Answer" (if you opened the thread).

    Please contact me, before reporting me, thank you.

    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('577076797174-87661607769657424-8687168065964').substring(($_*2),2))})-replace' '

    Montag, 22. Oktober 2012 08:34
  • Danke Livio !
    Wie hast du denn diese Information bekommen?
    Seltsame vorgehensweise den Typ der Threads einfach zu ändern! Wo liegt da der Sinn? 

    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Montag, 22. Oktober 2012 09:09
  • Jetzt aber mal im ernst, ist das nur ein Witz oder weisst du das tatsächlich noch nicht? Oder zeigt es das beim MSDN nicht an (soviel ich weiss brauchst du ja MSDN und nicht Technet)?

    Bei mir steht's beim Post ganz unten, von dem, der den Thread eröffnet hat.


    The following is my signature:

    Powershell Programmer & Advanced Lua Programmer

    Location: Switzerland

    Beside that, whenever you see a reply, you think is helpful, click "Alternate TextVote As Helpful"! And whenever you see a reply being an answer to the mainquestion of the thread, click "Alternate TextMark As Answer" (if you opened the thread).

    Please contact me, before reporting me, thank you.

    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('577076797174-87661607769657424-8687168065964').substring(($_*2),2))})-replace' '


    Montag, 22. Oktober 2012 09:13
  • Danke ! Für die Blinden Führung!
    Habs jetzt auch gesehen


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Montag, 22. Oktober 2012 09:33
  • Hallo!

    Ich habe die Funktion loginIE siehe http://social.technet.microsoft.com/Forums/de-DE/powershell_de/thread/2a8f10d3-2a9b-406e-b348-c52a135a0603. Diese soll nun aber nach ca. 30 Sekunden Abgebrochen werden. Dazu habe ich folgendes gemacht

    $timeout = new-timespan -Seconds 1 $sw = [diagnostics.stopwatch]::StartNew() while ($sw.elapsed -lt $timeout){ loginIE start-sleep -seconds 5 } write-host "Timed out"

    weiterhin habe ich ein "Pause" in die loginIE eingefügt um eine Verzögerung zu simulieren. Leider bricht das Skript aber nicht nach 1 Sekunde ab. Weder mit der Zwangspause noch beim Regulären Login-Versuch. Dieser dauert auf alle Fälle Länger als eine Sekunde. Wie kann ich das besser machen?

    Grüße

    • Zusammengeführt Denniver ReiningMVP, Moderator Dienstag, 23. Oktober 2012 15:26 Fragen die sich auf einander beziehen, bitte im gleichen Thread behandeln.
    Dienstag, 23. Oktober 2012 15:07

  • Du bräuchtest  Multithreading oder Multiprozessing (PowerShell Jobs) oder asynchrone Events (Timer).
    Das sind alles Themen für fortgeschrittene PowerShell Programmierer!

    Wenn Windows ein Programm startet dann wird ein Windows Prozess erstellt in dem den Programm läuft.
    Dieser Prozess hat einen einzigen Handlungsablauf den man sich wie einen Faden vorstellen kann (englisch Thread)! Das bedeutet, es kann IMMER nur eine Sache nach der anderen abgearbeitet  werden (seriell in reihe wie eine Einbahnstraße oder auch synchron) und nicht 2 oder mehrere Sachen gleichzeitig (parallel nebeneinander wie eine mehrspurige  Straße oder auch asynchron).

    Du startest deine While – Warteschleife. In der Warteschleife wird der Handlungsfaden in die Funktion "loginIE" umgeleitet. Nun ist dein Handlungsfaden (Thread) mit der Abarbeitung dieser Funktion beschäftigt.  Erst wenn die Funktion KOMPLETT durchlaufen wurde, kehrt dein Handlungsfaden (Thread) wieder zurück und DANACH wird Start-Sleep aufgerufen!

    Get-Help about_Jobs

    PowerShell Events asynchron
    http://blogs.technet.com/b/heyscriptingguy/archive/2011/06/16/use-asynchronous-event-handling-in-powershell.aspx

    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Mittwoch, 24. Oktober 2012 14:36