Hallo Gemeinde,
um den Anforderungen der Pandemie im VPN Umfeld Herr zu werden möchte ich die WSUS Update von einem externen Server laden, das Reporting und Suchen nach Updates jedoch durch die VPN-Strecke gegen unseren internen WSUS Server durchführen.
Wir haben nun eine Kopie der WSUS Files in die AzureCloud gestellt und werden den Traffic bei Usern im HomeOffice am VPN vorbei routen.
Meine Idee:
1. Nutzen der WUAPI
2. Erstellen einer UpdateSession und Suchen der Updates gegen den internen WSUS durch die VPN Leitung.
3. Download der Dateien vom Externen WSUS
4. Einbinden der .cab Files mit IUpdate2::CopyToCache
5. Installieren der Updates aus Cache
Folgend mein Script:(Darf noch kein Script einfügen)
$UpdateSession = New-Object -ComObject Microsoft.Update.Session
$UpdateSearcher = $UpdateSession.CreateUpdateSearcher()
$UpdateCollection = New-Object -Com Microsoft.Update.UpdateColl
$SearchResult = $UpdateSearcher.Search("IsInstalled=0 and Type='Software'")
$AvailibleUpdates = [int16]$SearchResult.Updates.Count
$AvailibleUpdates
$WebClient = New-Object System.Net.WebClient
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
@($SearchResult.Updates.Item(0).BundledUpdates) | Foreach {
$_.DownloadContents | Foreach {
$FileName = $_.DownloadUrl.Split("/")[-1]
$downloadFrom = $_.DownloadUrl.Replace("http://contoso-intern.com","https://contoso-extern.com/wsusreplica")
$WebClient.DownloadFile($downloadFrom,("C:\temp\WSUS\{0}" -f $FileName))
Write-Host "File Downloaded" -ForegroundColor Green
}
$StringCollection = New-Object System.Collections.Specialized.StringCollection
$StringCollection.Add(("C:\temp\WSUS\{0}" -f $FileName))
$_.CopyToCache($StringCollection)
}
Dies erzeugt leider folgenden Fehler:
Specified cast is not valid.At line:24 char:19
+ $_.CopyToCache($StringCollection)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], InvalidCastException
+ FullyQualifiedErrorId : System.InvalidCastException
Vielen Dank für eure Unterstützung
Viele Grüße
eldo.Ob