peterleb
Goto Top

Script zum Download hinter einem Proxy

Ein Windows-10-Rechner hinter einem Proxy tut sich immer schwer mit dem automatischen Download der Defender-Virendefinitionen.

Eine Desktop-Verknüpfung zum Aktualisierungsprogramm habe ich: http://go.microsoft.com/fwlink/?linkid=87341.

Wird die angeklickt, geht ein Browserfenster auf (Chrome), der Proxy-Zugang muß bestätigt werden, die Datei mpam-feX64.exe wird heruntergeladen, dann muß das Behalten der Datei bestätigt und die Ausführung gestartet werden. Zuguterletzt muß das Browserfenster geschlossen werden.

Kann man das nicht automatisieren?

Vielen Dank
Peter

Content-Key: 548674

Url: https://administrator.de/contentid/548674

Printed on: April 19, 2024 at 23:04 o'clock

Member: Inf1d3l
Inf1d3l Feb 18, 2020 at 06:58:01 (UTC)
Goto Top
Mitglied: 142970
Solution 142970 Feb 18, 2020 updated at 07:42:22 (UTC)
Goto Top
Neben wget natürlich auch curl und die anderen üblichen verdächtigen wie Powershell mit Webclient und Proxyangabe usw.
Member: Kraemer
Solution Kraemer Feb 18, 2020 at 09:14:58 (UTC)
Goto Top
Von den Lösungen, die @142970 aufgeführt hat, ist die Powershellvariante zu bevorzugen. Damit lässt sich nämlich ein ordentliches Fehlerhandling bauen.
Member: PeterleB
PeterleB Feb 18, 2020 at 09:41:50 (UTC)
Goto Top
Die PS-Geschichte gefällt mir.
Sowas ähnliches habe ich schon für eine Google-Abfrage im Einsatz.

Wenn das Script fertig ist, kann ich es Euch ja mal vorstellen.

Danke
Gruß
Peter
Member: PeterleB
PeterleB Feb 19, 2020 at 16:07:13 (UTC)
Goto Top
Problem:
iex($webclient.DownloadString("https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64"))  

erzeugt kein downloadbares File.
Es müßte eigentlich eine "mpam-fe.exe" irgendwo erscheinen.
Tagesaktuell wäre es dieser Link:
https://definitionupdates.microsoft.com/download/DefinitionUpdates/Versi ...

Wie kann ich das lösen?
Mitglied: 142970
Solution 142970 Feb 19, 2020 updated at 16:18:09 (UTC)
Goto Top
Wie kann ich das lösen?
Naja, überleg doch erst mal scharf und schlage nach was DownloadString bedeutet! Dann siehst du das es ja auch die komplett falsche Methode dafür ist, die nutzt man nur wenn man Text oder Webseiten als String runterladen will ... für Binary Files nutzt man natürlich DownloadFile mit dem zweiten Parameter einen Pfad zum Ziel übergeben.

$webclient = New-Object System.Net.WebClient
# Proxy Gedöhns ....
$webclient.DownloadFile("https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64","D:\temp\mpam-fe.exe")  

Es müßte eigentlich eine "mpam-fe.exe" irgendwo erscheinen.
Von selbst tut sie das nicht und schon gar nicht "irgendwo" face-big-smile face-big-smile.
Member: PeterleB
PeterleB Feb 19, 2020 at 16:23:54 (UTC)
Goto Top
Danke, genau das habe ich gerade selbst herausgefunden und wollte es posten.
Stimmt alles, mein Fehler.
Und es klappt tatsächlich!

Danke
Peter
Member: PeterleB
PeterleB Feb 19, 2020 updated at 16:29:49 (UTC)
Goto Top
So sieht es jetzt aus:

$webclient = New-Object System.Net.WebClient

$proxyenabled = Get-ItemProperty -Path "Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"  
    #if proxy
    if($proxyenabled.ProxyEnable -eq 1) { 
        # Standardanmeldedaten ...
        ## $proxy = [System.Net.WebProxy]::GetDefaultProxy()
        ## $proxy.UseDefaultCredentials = $true
        # ...oder nach Anmeldedaten fragen
        ## $proxy.Credentials = (Get-Credential).GetNetworkCredential()
        # ...oder Anmeldedaten übergeben
        ## $creds = New-object System.Net.NetworkCredential($Username,$Password)
        $proxy = New-Object System.Net.WebProxy("http://XXX.XXX.XXX.XXX:80")  
        $creds = New-object System.Net.NetworkCredential("USER","PASSWORD")  
        $proxy.Credentials = $creds
        $webclient.Proxy = $proxy
        }
    #endif proxy
$webclient.DownloadFile("https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64","D:\Downloads\mpam-fe.exe")  

Noch den Befehl zum Ausführen anhängen, dann sollte das Script schon fertig sein.
Member: Kraemer
Solution Kraemer Feb 19, 2020 updated at 16:37:48 (UTC)
Goto Top
Ist ja schön, dass du deine Zugangsdaten zum Proxy wieder gelöscht hast face-wink . Schöner wäre es, wenn du jetzt noch die nutzlosen Kommentare aus dem Code entfernst. face-smile

ungefähr so:

$WebClient = New-Object System.Net.WebClient

$InternetSettings = Get-ItemProperty -Path "Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"  
if ($InternetSettings.ProxyEnable -eq 1) { 
    $WebProxy = New-Object System.Net.WebProxy("http://XXX.XXX.XXX.XXX:80")  
    $Credentials = New-object System.Net.NetworkCredential("USER", "PASSWORD")  
    $WebProxy.Credentials = $Credentials
    $WebClient.Proxy = $WebProxy
}

$WebClient.DownloadFile("https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64", "D:\Downloads\mpam-fe.exe")  
Member: PeterleB
PeterleB Feb 19, 2020 at 18:15:11 (UTC)
Goto Top
Die Kommentare in der "if proxy" Schleife zeigen nur andere Möglichkeiten der Proxy-Ermittlung.

Zum Starten der mpam-fe.exe:

$Cmd = "D:\Downloads\mpam-fe.exe"  

Oder nimmt man da start-process oder ein anderes Ausführungskommando?

Gruß
Peter
Mitglied: 142970
Solution 142970 Feb 19, 2020 at 20:26:01 (UTC)
Goto Top
Kannst du dir aussuchen
"D:\Downloads\mpam-fe.exe"  
# oder
& "D:\Downloads\mpam-fe.exe"  
# oder
start-process "D:\Downloads\mpam-fe.exe"  
# usw.
Member: PeterleB
PeterleB Feb 20, 2020 at 09:02:31 (UTC)
Goto Top
Danke.
Member: PeterleB
PeterleB Feb 24, 2020 at 08:45:27 (UTC)
Goto Top
Noch eine Frage zur Anweisung:

$WebClient.DownloadFile(...)

Überschreibt diese ohne Nachfrage eine vorhandene gleichnamige Datei?

Gruß
Peter