2017-11-16 17 views
0

新しいWindows Defenderウイルス定義を誰かがMicrosoftからネットワーク上の場所にダウンロードするために作成したPowerShellスクリプトを使用します。 4つのファイルがダウンロードされます。問題は、ネットワークやWebサイトの問題によりダウンロードが失敗することがあることです。だから、私は成功するまで自動的に再試行に失敗したダウンロードを希望します。以下は、スクリプトの関連部分の外観です。どんな助けもありがとう。ダウンロードが失敗した場合のPowerShellコマンドの再試行

# Source Addresses - Defender for Windows 10, 8.1 ################################ 

$sourceAVx86 = "http://go.microsoft.com/fwlink/?LinkID=121721&arch=x86" 
$sourceNISx86 = "http://go.microsoft.com/fwlink/?LinkID=187316&arch=x86&nri=true" 
$sourceAVx64 = "http://go.microsoft.com/fwlink/?LinkID=121721&arch=x64" 
$sourceNISx64 = "http://go.microsoft.com/fwlink/?LinkID=187316&arch=x64&nri=true" 

# Web client ##################################################################### 

$wc = New-Object System.Net.WebClient 
$wc.Proxy = [System.Net.WebRequest]::DefaultWebProxy 
$wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials 

# x86 AV ######################################################################### 

$Dest = "$Destination\x86\" + 'mpam-fe.exe' 
$wc.DownloadFile($sourceAVx86, $Dest) 

# x86 NIS ######################################################################## 

$Dest = "$Destination\x86\" + 'nis_full.exe' 
$wc.DownloadFile($sourceNISx86, $Dest) 

# x64 AV ######################################################################### 

$Dest = "$Destination\x64\" + 'mpam-fe.exe' 
$wc.DownloadFile($sourceAVx64, $Dest) 

# x64 NIS ######################################################################## 

$Dest = "$Destination\x64\" + 'nis_full.exe' 
$wc.DownloadFile($sourceNISx64, $Dest) 
+1

WSUSはより堅牢で実装が簡単です。 –

+0

成功するまで、 'Try/Catch'ブロックで再帰関数を試すことができます。 – TheIncorrigible1

+0

Bill、WSUSを使用しますが、これらの特定のダウンロードはOSDイメージング中に定義を更新するために使用されます。 – Chris

答えて

1

1つの方法は、宛先でのファイルの存在をテストすることです。 ファイルが存在しない場合は、ダウンロードを再試行してください。移動する前に何回ダウンロードを試みるべきかを設定する変数を入れました。

$maxAttempts = 5 #set the maximum number of attempts in case the download will never succeed. 

$sourceAVx86 = "http://go.microsoft.com/fwlink/?LinkID=121721&arch=x86" 
$sourceNISx86 = "http://go.microsoft.com/fwlink/?LinkID=187316&arch=x86&nri=true" 
$sourceAVx64 = "http://go.microsoft.com/fwlink/?LinkID=121721&arch=x64" 
$sourceNISx64 = "http://go.microsoft.com/fwlink/?LinkID=187316&arch=x64&nri=true" 

$wc = New-Object System.Net.WebClient 
$wc.Proxy = [System.Net.WebRequest]::DefaultWebProxy 
$wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials 

#Define destination file paths: 
$DestAVx86 = "$Destination\x86\" + 'mpam-fe.exe' 
$DestNISx86 = "$Destination\x86\" + 'nis_full.exe' 
$DestAVx64 = "$Destination\x64\" + 'mpam-fe.exe' 
$DestNISx64 = "$Destination\x64\" + 'nis_full.exe' 

#Delete old versions of the files if they exist 
if (Test-Path $DestAVx86) { 
    Remove-Item $DestAVx86 
} 
if (Test-Path $DestNISx86) { 
    Remove-Item $DestNISx86 
} 
if (Test-Path $DestAVx64) { 
    Remove-Item $DestAVx64 
} 
if (Test-Path $DestNISx64) { 
    Remove-Item $DestNISx64 
} 

$attemptCount = 0 
Do { 
    $attemptCount++ 
    $wc.DownloadFile($sourceAVx86, $Dest) 
} while (((Test-Path $DestAVx86) -eq $false) -and ($attemptCount -le $maxAttempts)) 

$attemptCount = 0 
Do { 
    $attemptCount++ 
    $wc.DownloadFile($sourceNISx86, $Dest) 
} while (((Test-Path $DestNISx86) -eq $false) -and ($attemptCount -le $maxAttempts)) 

$attemptCount = 0 
Do { 
    $attemptCount++ 
    $wc.DownloadFile($sourceAVx64, $Dest) 
} while (((Test-Path $DestAVx64) -eq $false) -and ($attemptCount -le $maxAttempts)) 

$attemptCount = 0 
Do { 
    $attemptCount++ 
    $wc.DownloadFile($sourceNISx64, $Dest) 
} while (((Test-Path $DestNISx64) -eq $false) -and ($attemptCount -le $maxAttempts)) 
+0

それを試してみてください。古いファイルは削除されましたが、新しいファイルはダウンロードされませんでした。 – Chris

+0

$ Destination変数が設定されていることを確認します。私はあなたのスクリプトでそれを見ていなかったし、私はそれに私の価値を割り当てなかった。 –

+0

それはそこにある、私はそれを示していない。 SCCMサーバーにアクセスできないため、他の誰かがSCCMサーバーからSCCMサーバーを実行しているため、トラブルシューティングが難しくなります。他に何か考えることができますか? – Chris

関連する問題