none
Windows Update API CopyToCache(IStringCollection) - Specified cast is not valid RRS feed

  • Frage

  • 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


    Dienstag, 9. Februar 2021 12:17

Antworten

  • Hi das isst eine gute und berechtigte Frage :) Leider habe ich das Produkt nicht in der Hand aber eine umfangreiche Update Routine erstellt, welche dann auch den User benachrichtigt und ihn nach X-Zeiteinheiten dazu zwingt das Update durchführen zu lassen.

    Aber ich werde das mal mitnehmen :)

    Habe jedoch eine funktionierende Lösung erhalten, ich muss die IStringCollection als COM Objekt erzeugen, dann läufts.

    https://stackoverflow.com/questions/66115278/windows-update-api-copytocacheistringcollection-specified-cast-is-not-valid/66123261#66123261 

    • Als Antwort markiert Eldo.Ob Mittwoch, 10. Februar 2021 09:36
    Mittwoch, 10. Februar 2021 09:21

Alle Antworten

  • Wir haben nun eine Kopie der WSUS Files in die AzureCloud gestellt und werden den Traffic bei Usern im HomeOffice am VPN vorbei routen.

    Ich weiß, dass es nicht die Antwort auf Deine Frage ist, aber warum macht ihr das nicht so wie vom Hersteller vorgesehen und lasst die Clients, die außerhalb der Umgebung sind, die Binaries von WU downloaden, während Reporting und Freigaben weiterhin vom WSUS kommen?


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Dienstag, 9. Februar 2021 16:42
  • Hi das isst eine gute und berechtigte Frage :) Leider habe ich das Produkt nicht in der Hand aber eine umfangreiche Update Routine erstellt, welche dann auch den User benachrichtigt und ihn nach X-Zeiteinheiten dazu zwingt das Update durchführen zu lassen.

    Aber ich werde das mal mitnehmen :)

    Habe jedoch eine funktionierende Lösung erhalten, ich muss die IStringCollection als COM Objekt erzeugen, dann läufts.

    https://stackoverflow.com/questions/66115278/windows-update-api-copytocacheistringcollection-specified-cast-is-not-valid/66123261#66123261 

    • Als Antwort markiert Eldo.Ob Mittwoch, 10. Februar 2021 09:36
    Mittwoch, 10. Februar 2021 09:21