أفضل طريقة للكشف عن إذا كان ويندوز ويندوز التحديثات على استعداد تحميل/تثبيت ؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

أنا مهتمة بشكل خاص في نظام التشغيل Windows 2000/XP, ولكن Vista/7 سيكون من المثير للاهتمام أيضا (إذا كان مختلفا).

كنت أفكر على طول خطوط جدولة المهام ملف دفعي أو ما يعادلها على أساس يومي.

تحرير:أنا آسف كان يجب أن تقدم مزيد من المعلومات.مسألة تتعلق 10 الآلات التي أنا يدويا تطبيق التحديثات.أنا لا أريد أن تثبيت التحديثات برمجيا ، ولكن فقط معرفة ما إذا كان هناك تحديثات على استعداد تحميل/تثبيت (أيالتحديث الدرع رمز في علبة النظام يشير إلى هذا) باستخدام دفعي أو برنامج نصي.شكرا

هل كانت مفيدة؟

المحلول 6

في النهاية ، ويندوز SUS لم يكن خيارا ، لذلك أنا باستخدام التالية في ملف دفعي إلى جنب مع ActiveState ActivePerl (الموصى بها):

بيرل -nle "طباعة $_ إذا م/الكشف عن التحديثات/أنا" < c:\Windows\WindowsUpdate.سجل

قد يكون هذا الخام أو القذرة ، و قد كسر في المستقبل لكن حاليا لا ما أحتاج.

شكرا لجميع الأفكار.

نصائح أخرى

هل يمكن استخدام WUApiLib:

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);
                }
            }
        }

ويندوز SUS يعمل بشكل جيد جدا على العديد من الأجهزة على الشبكة.

"أسهل" طريقة لمعرفة ذلك هو الإعداد تحديثات ويندوز تحدث ليلا و تحميل التحديثات إذا كانت متوفرة ثم يضع التحديث الدرع رمز في علبة النظام.مجرد إلقاء نظرة على علبة لمعرفة ما إذا كان الرمز هو الحاضر.

يمكنك أيضا إعداد ويندوز للتحقق ليلا للحصول على التحديثات, ثم تحميل وتثبيت لهم في وقت محدد.

في ما يخص ما mdsindzeleta قال - الذهاب حول هذا برمجيا ربما ليست أفضل حل.أود أن استخدام الميزات المضمنة في نظام التشغيل Windows XP لتحميل وتثبيت التحديثات.أنا على افتراض أن فيستا لديها ميزات مشابهة.

أعتقد أن ويندوز التحديثات التي تم تنزيلها باستخدام خدمة BITS.هل يمكن استخدام Bitsadmin.exe وجدت في أدوات دعم Windows.من سطر الأوامر يمكنك تشغيل bitsadmin.exe /القائمة و يمكنك رؤية حالة من بت الوظائف.(أيتحميل التقدم الوظيفي اسم وظيفة الحالة)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top