Megosztás a következőn keresztül:


Teljes instancia frissítése

A WMI-osztálypéldányok frissítésének leggyakoribb módja a teljes példány egyidejű frissítése. Egy teljes példány frissítésével a WMI-nek nem kell feldarabolnia a példányt egyes tulajdonságokra, és elküldenie az alkalmazásnak. Ehelyett a WMI egyszerűen elküldi a teljes példányt. Ha végzett, a WMI ezután átmásolhatja a teljes módosított példányt az eredeti példányra.

Az alábbi eljárás azt ismerteti, hogyan módosíthatja vagy frissítheti a példányokat a PowerShell használatával.

Példány módosításához vagy frissítéséhez a PowerShell használatával

  1. Kérje le az objektum helyi másolatát a Get-WmiObject hívásával.

    $mySettings = get-WMIObject Win32_WmiSetting
    
  2. Ha szükséges, tekintse meg az objektum tulajdonságait a Tulajdonságok gyűjtemény hívásával.

    Bár nem kötelező, érdemes tudnia a tulajdonság értékét a módosítás előtt.

    $mySettings.Properties
    
  3. Módosítsa a helyi objektum tulajdonságait.

    Ezzel csak a helyi példányt módosítja. A WMI módosításainak mentéséhez a teljes példányt vissza kell helyeznie a WMI-adattárba.

    $mySettings.LoggingLevel = 1
    
  4. Helyezze vissza az objektumot a WMI-adattárba a Put metódus hívásával.

    $mySettings.Put()
    

Az alábbi eljárás azt ismerteti, hogyan módosíthatja vagy frissítheti a példányokat a C# használatával.

Egy példány módosítása vagy frissítése C# nyelvvel (Microsoft.Management.Infrastructure)

  1. Kérje le az objektum helyi másolatát a CimSession.GetInstancehívásával, a "WMI példány lekérése"című részben leírtak szerint.

    using Microsoft.Management.Infrastructure;
    ...
    string Namespace = @"root\cimv2";
    string className = "win32_logicalDisk";
    
    CimInstance diskDrive = new CimInstance(className, Namespace);
    diskDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
    
    CimSession session = CimSession.Create("localhost");
    CimInstance myDisk = session.GetInstance(Namespace, diskDrive);
    
  2. Ha szükséges, tekintse meg az objektum tulajdonságait a Tulajdonságok gyűjtemény hívásával.

    Bár nem kötelező, érdemes tudnia a tulajdonság értékét a módosítás előtt.

    foreach (CimProperty property in myDisk.CimInstanceProperties)
    {
       Console.WriteLine(property.ToString());
    }
    
    Console.ReadLine();
    
  3. Módosítsa a helyi objektum tulajdonságait.

    Ezzel csak a helyi példányt módosítja. A WMI módosításainak mentéséhez a teljes példányt vissza kell helyeznie a WMI-adattárba.

    myDisk.CimInstanceProperties["VolumeName"].Value = "NewName";
    
  4. Helyezze vissza az objektumot a WMI-adattárba a CimSession.ModifyInstance hívásával.

    session.ModifyInstance(Namespace,myDisk);
    

Az alábbi eljárás azt ismerteti, hogyan módosíthatja vagy frissítheti a példányokat a PowerShell használatával.

Jegyzet

System.Management a WMI eléréséhez használt eredeti .NET-névtér volt; azonban a névtér API-jai általában lassabbak, és nem méreteznek olyan jól a modernebb Microsoft.Management.Infrastructure megfelelőikhez képest.

 

Példány módosítása vagy frissítése C# nyelven (Microsoft.Management)

  1. Kérje le az objektum helyi másolatát a ManagementObject.Get hívásával.

    using System.Management;
    ...
    ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
    myDisk.Get();
    
  2. Ha szükséges, tekintse meg az objektum tulajdonságait a Tulajdonságok gyűjtemény hívásával.

    Bár nem kötelező, érdemes tudnia a tulajdonság értékét a módosítás előtt.

    foreach (PropertyData property in myDisk.Properties)
    {
       Console.WriteLine(property.Name + " " + property.Value);
    }
    
    Console.ReadLine();
    
  3. Módosítsa a helyi objektum tulajdonságait.

    Ezzel csak a helyi példányt módosítja. A WMI módosításainak mentéséhez a teljes példányt vissza kell helyeznie a WMI-adattárba.

    myDisk["VolumeName"] = "newName";
    
  4. Helyezze vissza az objektumot a WMI-adattárba a ManagementObject.Put vagy metódus hívásával.

    myDisk.Put();
    

Az alábbi eljárás azt ismerteti, hogyan módosíthatja vagy frissítheti a példányokat a VBScript használatával.

VBScript használatával példány módosítása vagy frissítése

  1. Kérje le az objektum helyi másolatát a GetObject hívásával.

  2. Ha szükséges, tekintse meg az objektum tulajdonságait a Properties_ metódus meghívásával.

    Bár nem kötelező, érdemes tudnia a tulajdonság értékét a módosítás előtt.

  3. Módosítsa az objektumtulajdonságokat az SWbemProperty.Value metódus hívásával.

    A Érték metódus csak a helyi példányt módosítja. A WMI módosításainak mentéséhez a teljes példányt vissza kell helyeznie a WMI-adattárba.

  4. Helyezze vissza az objektumot a WMI-adattárba a SWbemObject.Put_ vagy SWbemObject.PutAsync_ metódus meghívásával.

Ahogy a nevek is utalnak, Put_ szinkron módon frissülnek, miközben PutAsync_ aszinkron módon frissülnek. Bármelyik metódus átmásolja az eredeti példányt a módosított példánysal. Az aszinkron feldolgozás előnyeinek kihasználásához azonban létre kell hoznia egy SWbemSink objektumot. További információkért lásd: Metódus meghívása.

Az alábbi eljárás azt ismerteti, hogyan módosíthatja vagy frissítheti a példányokat a C++ használatával.

Egy példány módosítása vagy frissítése C++-szal

  1. A példány helyi másolatának lekérése IWbemServices::GetObject vagy IWbemServices::GetObjectAsynchívásával.

  2. Ha szükséges, tekintse meg az objektum tulajdonságait az IWbemClassObject::Getmeghívásával.

    Bár nem kötelező, érdemes tudnia a tulajdonság értékét a módosítás előtt.

  3. Végezze el a szükséges módosításokat a szövegen az IWbemClassObject::Puthívásával.

    A Put metódus csak a helyi példányt módosítja. A WMI módosításainak mentéséhez a teljes példányt vissza kell helyeznie a WMI-adattárba.

  4. Helyezze vissza a másolatot a WMI-adattárba az IWbemServices::PutInstance vagy IWbemServices::PutInstanceAsync metódusok meghívásával.

    Ahogy a nevek is utalnak rá, PutInstance szinkron módon frissülnek, míg PutInstanceAsync aszinkron módon frissülnek. Bármelyik metódus átmásolja az eredeti példányt a módosított példánysal. Az aszinkron feldolgozás előnyeinek kihasználásához azonban implementálnia kell a IWbemObjectSink felületet.

    Vegye figyelembe, hogy egy osztályhierarchiához tartozó példány frissítési művelete nem feltétlenül sikerül a hierarchia egy másik osztályát érintő hiba miatt. A WMI meghívja a PutInstanceAsync metódust minden olyan szolgáltató számára, amelyek felelősek azokért az osztályokért, amelyekből az eredeti példányt birtokló osztály származik. Ha bármelyik szolgáltató sikertelen, az eredeti frissítési kérés meghiúsul. További információért lásd a PutInstanceAsyncMegjegyzések szakaszát.

További információkért lásd: Szolgáltatói módszer meghívása.

Jegyzet

Mivel előfordulhat, hogy a fogadó visszahívása nem az ügyfél által igényelt hitelesítési szinten történik, javasoljuk, hogy az aszinkron kommunikáció helyett félszinkron kommunikációt alkalmazzon. További információért lásd: Metódus hívása.