Beste Art und Weise der Erfassung, wenn Windows hat Windows-Updates bereit heruntergeladen / installiert?

StackOverflow https://stackoverflow.com/questions/121585

  •  02-07-2019
  •  | 
  •  

Frage

Ich bin speziell interessiert in Windows 2000 / XP, aber Vista / 7 wäre auch interessant sein (falls abweichend).

Ich war nach dem Vorbild der Aufgabe zu denken eine Batch-Datei oder gleichwertigem auf einer täglichen Basis planen.

EDIT: Sorry, ich hätte mehr Informationen zur Verfügung gestellt. Die Frage bezieht sich auf 10 Maschinen, die ich manuell Updates anwenden. Ich will nicht den Updates programmatisch installieren, aber nur herausfinden, ob Updates steht zum Download bereit / installieren (das heißt das Update Schild-Symbol in der Taskleiste anzeigt, diese) eine Batch oder Skript. Danke.

War es hilfreich?

Lösung 6

Am Ende Windows-SUS war keine Option , so in einer Batch-Datei Verbindung der folgenden verwende ich mit Activestate ActivePerl (empfohlen):

perl -NLE "print $ _, wenn m / Updates erkannt / i"

Das kann roh oder schmutzig sein, und könnte in Zukunft brechen, aber es gegenwärtig der Fall ist, was ich brauche.

Vielen Dank für alle Ideen.

Andere Tipps

Sie könnten WUApiLib verwenden:

UpdateSessionClass session = new UpdateSessionClass();

IUpdateSearcher search = session.CreateUpdateSearcher();

ISearchResult result = search.Search("IsInstalled=0 and IsPresent=0 and Type='Software'");

int numberOfUpdates = result.Updates.Count - 1;

Log.Debug("Found " + numberOfUpdates.ToString() + " updates");

UpdateCollection updateCollection = new UpdateCollection();

for (int i = 0; i < numberOfUpdates; i++)
{
    IUpdate update = result.Updates[i];

    if (update.EulaAccepted == false)
    {
        update.AcceptEula();
    }

    updateCollection.Add(update);
}

if (numberOfUpdates > 0)
{
    UpdateCollection downloadCollection = new UpdateCollection();

    for (int i = 0; i < updateCollection.Count; i++)
    {
        downloadCollection.Add(updateCollection[i]);
    }

    UpdateDownloader downloader = session.CreateUpdateDownloader();

    downloader.Updates =  downloadCollection;

    IDownloadResult dlResult = downloader.Download();

    if (dlResult.ResultCode == OperationResultCode.orcSucceeded)
    {
        for (int i = 0; i < downloadCollection.Count; i++)
        {
            Log.Debug(string.Format("Downloaded {0} with a result of {1}", downloadCollection[i].Title, dlResult.GetUpdateResult(i).ResultCode));
        }

        UpdateCollection installCollection = new UpdateCollection();

        for (int i = 0; i < updateCollection.Count; i++)
        {
            if (downloadCollection[i].IsDownloaded)
            {
                installCollection.Add(downloadCollection[i]);
            }
        }

        UpdateInstaller installer = session.CreateUpdateInstaller() as UpdateInstaller;

        installer.Updates = installCollection;

        IInstallationResult iresult = installer.Install();

        if (iresult.ResultCode == OperationResultCode.orcSucceeded)
        {
            updated = installCollection.Count.ToString() + " updates installed";

            for (int i = 0; i < installCollection.Count; i++)
            {
                Log.Debug(string.Format("Installed {0} with a result of {1}", installCollection[i].Title, iresult.GetUpdateResult(i).ResultCode));
            }

            if (iresult.RebootRequired == true)
            {
                ManagementClass mcWin32 = new ManagementClass("Win32_OperatingSystem");

                foreach (ManagementObject shutdown in mcWin32.GetInstances())
                {
                    shutdown.Scope.Options.EnablePrivileges = true;
                    shutdown.InvokeMethod("Reboot", null);
                }
            }
        }

Windows-SUS für mehrere Maschinen in einem Netzwerk funktioniert sehr gut .

Der „einfachste“ Weg, zu sagen ist die Einrichtung von Windows-Updates jede Nacht auftreten und das Updates herunterladen, wenn vorhanden, die dann auf das Symbol Update Schild in der Taskleiste setzt. Nur Blick auf das Tablett zu sehen, ob das Symbol vorhanden ist.

Sie könnten auch ein Setup von Windows jede Nacht für das Updates zu überprüfen, dann herunterladen und sie zu einem bestimmten Zeitpunkt installieren.

In Bezug auf das, was mdsindzeleta sagte - darüber gehen programmatisch ist wahrscheinlich nicht die beste Lösung. Ich würde die Funktionen eingebaut in Windows XP verwenden, um Updates herunterzuladen und zu installieren. Ich gehe davon aus, dass Vista hat ähnliche Eigenschaften.

Ich glaube, Windows-Updates heruntergeladen werden unter Verwendung der BITS-Dienst. Sie könnten Bitsadmin.exe in den Windows-Supporttools verwenden Sie. Über die Befehlszeile können Sie Bitsadmin.exe / Liste ausführen und den Status von BITS Jobs sehen. (D Download Fortschritt, Auftragsname, Auftragsstatus)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top