Bagikan melalui


Memperbarui Seluruh Instans

Cara paling umum untuk memperbarui instans kelas WMI adalah memperbarui seluruh instans sekaligus. Dengan memperbarui seluruh instans, WMI tidak perlu mengurai instans ke properti individual dan mengirimkannya ke aplikasi Anda. Sebaliknya, WMI cukup mengirimi Anda seluruh instans. Setelah selesai, WMI kemudian dapat menyalin seluruh instans yang diubah melalui instans asli.

Prosedur berikut menjelaskan cara mengubah atau memperbarui instans menggunakan PowerShell.

Untuk mengubah atau memperbarui instans menggunakan PowerShell

  1. Ambil salinan lokal objek dengan panggilan ke Get-WmiObject.

    $mySettings = get-WMIObject Win32_WmiSetting
    
  2. Jika perlu, lihat properti objek dengan panggilan ke koleksi Properti.

    Meskipun tidak diperlukan, Anda mungkin ingin mengetahui nilai properti sebelum mengubahnya.

    $mySettings.Properties
    
  3. Buat perubahan apa pun pada properti objek lokal.

    Melakukannya hanya mengubah salinan lokal. Untuk menyimpan perubahan ke WMI, Anda harus menempatkan seluruh salinan kembali ke repositori WMI.

    $mySettings.LoggingLevel = 1
    
  4. Tempatkan objek kembali ke repositori WMI menggunakan panggilan ke metode Put.

    $mySettings.Put()
    

Prosedur berikut menjelaskan cara mengubah atau memperbarui instans menggunakan C#.

Untuk mengubah atau memperbarui instans menggunakan C# (Microsoft.Management.Infrastructure)

  1. Ambil salinan lokal objek dengan panggilan ke CimSession.GetInstance, seperti yang dijelaskan dalam Mengambil Instans WMI.

    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. Jika perlu, lihat properti objek dengan panggilan ke koleksi Properti.

    Meskipun tidak diperlukan, Anda mungkin ingin mengetahui nilai properti sebelum mengubahnya.

    foreach (CimProperty property in myDisk.CimInstanceProperties)
    {
       Console.WriteLine(property.ToString());
    }
    
    Console.ReadLine();
    
  3. Buat perubahan apa pun pada properti objek lokal.

    Melakukannya hanya mengubah salinan lokal. Untuk menyimpan perubahan ke WMI, Anda harus menempatkan seluruh salinan kembali ke repositori WMI.

    myDisk.CimInstanceProperties["VolumeName"].Value = "NewName";
    
  4. Tempatkan objek kembali ke repositori WMI menggunakan panggilan ke CimSession.ModifyInstance.

    session.ModifyInstance(Namespace,myDisk);
    

Prosedur berikut menjelaskan cara mengubah atau memperbarui instans menggunakan PowerShell.

Catatan

System.Management adalah namespace .NET asli yang digunakan untuk mengakses WMI; namun, API di namespace ini umumnya lebih lambat dan tidak menskalakan juga relatif terhadap rekan-rekan Microsoft.Management.Infrastructure yang lebih modern.

 

Untuk mengubah atau memperbarui instans menggunakan C# (Microsoft.Management)

  1. Ambil salinan lokal objek dengan panggilan ke ManagementObject.Get.

    using System.Management;
    ...
    ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
    myDisk.Get();
    
  2. Jika perlu, lihat properti objek dengan panggilan ke koleksi Properti.

    Meskipun tidak diperlukan, Anda mungkin ingin mengetahui nilai properti sebelum mengubahnya.

    foreach (PropertyData property in myDisk.Properties)
    {
       Console.WriteLine(property.Name + " " + property.Value);
    }
    
    Console.ReadLine();
    
  3. Buat perubahan apa pun pada properti objek lokal.

    Melakukannya hanya mengubah salinan lokal. Untuk menyimpan perubahan ke WMI, Anda harus menempatkan seluruh salinan kembali ke repositori WMI.

    myDisk["VolumeName"] = "newName";
    
  4. Tempatkan objek kembali ke repositori WMI menggunakan panggilan ke ManagementObject.Put atau metode .

    myDisk.Put();
    

Prosedur berikut menjelaskan cara memodifikasi atau memperbarui instans menggunakan VBScript.

Untuk mengubah atau memperbarui instans menggunakan VBScript

  1. Ambil salinan lokal objek dengan panggilan ke GetObject.

  2. Jika perlu, lihat properti objek dengan panggilan ke metode Properties_ .

    Meskipun tidak diperlukan, Anda mungkin ingin mengetahui nilai properti sebelum mengubahnya.

  3. Buat perubahan apa pun pada properti objek dengan panggilan ke metode SWbemProperty.Value .

    Metode Nilai hanya mengubah salinan lokal. Untuk menyimpan perubahan ke WMI, Anda harus menempatkan seluruh salinan kembali ke repositori WMI.

  4. Tempatkan objek kembali ke repositori WMI dengan panggilan metode SWbemObject.Put_ atau SWbemObject.PutAsync_ .

Sesuai namanya, Put_ diperbarui secara sinkron saat PutAsync_ diperbarui secara asinkron. Salah satu metode menyalin instans asli dengan instans anda yang dimodifikasi. Namun, untuk memanfaatkan pemrosesan asinkron, Anda harus membuat objek SWbemSink . Untuk informasi selengkapnya, lihat Memanggil metode.

Prosedur berikut menjelaskan cara mengubah atau memperbarui instans menggunakan C++.

Untuk mengubah atau memperbarui instans menggunakan C++

  1. Ambil salinan lokal instans dengan panggilan ke IWbemServices::GetObject atau IWbemServices::GetObjectAsync.

  2. Jika perlu, lihat properti objek dengan panggilan ke IWbemClassObject::Get.

    Meskipun tidak diperlukan, Anda mungkin ingin mengetahui nilai properti sebelum mengubahnya.

  3. Buat perubahan yang diperlukan pada salinan dengan panggilan ke IWbemClassObject::P ut.

    Metode Put hanya mengubah salinan lokal. Untuk menyimpan perubahan ke WMI, Anda harus menempatkan seluruh salinan kembali ke repositori WMI.

  4. Tempatkan salinan Anda kembali ke repositori WMI dengan panggilan metode IWbemServices::P utInstance atau IWbemServices::P utInstanceAsync .

    Sesuai namanya, PutInstance diperbarui secara sinkron sementara PutInstanceAsync diperbarui secara asinkron. Salah satu metode menyalin instans asli dengan instans anda yang dimodifikasi. Namun, untuk memanfaatkan pemrosesan asinkron, Anda harus mengimplementasikan antarmuka IWbemObjectSink .

    Anda harus mengetahui bahwa operasi pembaruan pada instans milik hierarki kelas mungkin tidak berhasil karena kesalahan yang melibatkan kelas lain dalam hierarki. WMI memanggil metode PutInstanceAsync dari setiap penyedia yang bertanggung jawab atas kelas tempat kelas memiliki instans asli berasal. Jika salah satu penyedia ini gagal, permintaan pembaruan asli gagal. Untuk informasi selengkapnya, lihat bagian Keterangan dari PutInstanceAsync.

Untuk informasi selengkapnya, lihat Memanggil Metode Penyedia.

Catatan

Karena panggilan balik ke sink mungkin tidak dikembalikan pada tingkat autentikasi yang sama dengan yang diperlukan klien, disarankan agar Anda menggunakan semisinkron alih-alih komunikasi asinkron. Untuk informasi selengkapnya, lihat Memanggil Metode.