Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Alabildiğiniz ilk nesne türü bir WMI sınıfıdır. WMI sınıfını alırken, sınıfı tam olarak açıklayan özelliklerin, niteleyicilerin ve yöntemlerin listesi olan bir sınıf tanımı alırsınız. Ancak, bir sınıf tanımı temel olarak sınıfın kendisidir.
PowerShell, meta_class sınıfını kullanarak sınıf tanımlarını almak için standart bir sorgu kullanır.
PowerShell sınıf tanımını almak için
get-WmiObject meta_classsorguyla birlikte, alınacak sınıfın adını içeren WHERE yan tümcesini kullanın.
Get-WmiObject -query "SELECT * FROM meta_class WHERE __class = 'Win32_LogicalDisk'"Get-WmiObject, PowerShell'in WMI'den sınıf ve örnek bilgilerini almak için kullandığı standart cmdlet'tir. meta_class sınıfı sorguyu şema sorgusu olarak tanımlar. meta_class sınıfı olmadan, bu sorgu Win32_LogicalDisk tüm örneklerini döndürür. WMI sorgulama hakkında daha fazla bilgi için bkz. Select Deyimi şema sorguları.
C# dilinde WMI tanımını almak için geçerli işlem CIMInstance sınıfını kullanmaktır.
C# (Microsoft.Management.Infrastructure)'nde sınıf tanımı almak için
Microsoft.Management.Infrastructure ad alanını kullanarak, belirtilen ad alanı ve sınıf adına sahip bir CIMInstance sınıfı oluşturun.
Oluşturulan sınıf tüm sınıf bilgilerini içerir, ancak örnek verileri içermez.
using Microsoft.Management.Infrastructure; ... string Namespace = @"root\cimv2"; string className = "Win32_LogicalDisk"; CimInstance diskDrive = new CimInstance(className, Namespace);Alternatif olarak, PowerShell'de olduğu gibi, sorgunun bir parçası olarak meta_class etiketini kullanarak bir sorgu da gerçekleştirebilirsiniz.
using Microsoft.Management.Infrastructure; ... string Namespace = @"root\cimv2"; string diskDriveQuery = "SELECT * FROM meta_class WHERE __class = 'Win32_LogicalDisk'"; CimSession mySession = CimSession.Create("localhost"); IEnumerable<CimInstance> queryInstance = mySession.QueryInstances(Namespace, "WQL", diskDriveQuery);
PowerShell'de olduğu gibi C# da sınıf tanımlarını almak için bir meta_class sorgusu kullanır. Alternatif olarak, sınıf tanımına doğrudan erişmek için bir ManagementClass nesnesi oluşturabilirsiniz.
Not
System.Management WMI'ye erişmek için kullanılan özgün .NET ad alanıydı; ancak, bu ad alanındaki API'ler genellikle daha yavaştır ve daha modern Microsoft.Management.Infrastructure karşılıklarına göre ölçeklendirilmemektedir.
C# (System.Management) bir sınıf tanımı almak için
ManagementObjectSearcher ile, almak istediğiniz sınıfın adını içeren WHERE koşuluyla birlikte meta_classsorgusu kullanabilirsiniz.
using System.Management; ... ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM meta_class WHERE __class = 'Win32_LogicalDisk'"); ManagementObjectCollection myDiskCollection = searcher.Get();ManagementObjectSerarcher, .NET'in WMI'den sınıf ve örnek bilgilerini almak için kullandığı standart sınıftır. ManagementObjectSerarcher.Get, şema tanımı sınıfını içeren bir ManagementObjectCollection döndürür. meta_class sınıfı sorguyu şema sorgusu olarak tanımlar. meta_class sınıfı olmadan, bu sorgu tüm Win32_LogicalDiskörneklerini döndürür. WMI sorgulama hakkında daha fazla bilgi için bkz. Şema Sorguları için SELECT İfadesi.
Alternatif olarak, sınıfı almak için ad olarak yolu belirterek yeni bir ManagementClass nesnesi oluşturun.
using System.Management; ... ManagementClass objInst = new ManagementClass("Win32_LogicalDisk");
VBScript'te sınıf tanımını belirli bir örneği almaya benzer şekilde alabilirsiniz.
VBScript'te bir sınıf tanımını almak için
SWbemServices.Get çağırın, ancak nesne yolunda belirli bir sınıf örneğini tanımlamayın.
Aşağıdaki kod örneği, bilgisayarınızda mantıksal sürücüleri açıklayan sınıfın sınıf tanımını alır.
Set objinst = GetObject("WinMgmts:Win32_LogicalDisk")Windows Komut Dosyası Ana Bilgisayarı (WSH) da aşağıdakileri destekler.
<OBJECT id="myLocator" progid="WbemScripting.SWbemLocator"></OBJECT>Active Server Pages (ASP) ile sunucu tarafı betiğinde GetObject veya CreateObject kullanın. Daha fazla bilgi için bkz. WMIiçin Etkin Sunucu Sayfaları Oluşturma .
Bir sınıf veya örnek de belirtilebilir; bu durumda döndürülen nesne bir WMI nesnesidir, örneğin, hizmetler nesnesi yerine Win32_LogicalDiskörneğidir. SWbemObjectgenel nesnenin bir örneğini oluşturmak için VBScript GetObject işlevlerini kullanamayacağınızı unutmayın.
Microsoft Internet Explorer'da (IE) çalışan HTML sayfalarında, ActiveX denetimleri gibi WMI betik oluşturma nesneleri betik oluşturma için güvenli olarak işaretlenmediğinden GetObjectve CreateObjectbaşarısız olabilir. Tek özel durum SWbemDateTime nesnesidir. Bu çağrıların başarılı olmasının tek yolu, IE güvenlik ayarlarını düşürmektir, ancak bu önerilmez.
C++'da bir sınıf alırken, IWbemServices sürümünü GetObjectçağırın.
C++'da sınıf tanımı almak için
- Bir sınıfın tanımını almak için IWbemServices::GetObject veya IWbemServices::GetObjectAsync yöntemlerini çağırın.
- Bir sınıfın birden çok sınıf tanımı olabilir. Bu, genellikle bir ad alanına birden fazla sınıf sağlayıcısı yüklendiğinde gerçekleşir. Bir sınıfın birden çok sınıf tanımı olduğunda WMI, bulunan ilk tanımı ve WBEM_S_DUPLICATE_OBJECTS durum kodunu döndürür.
GetObjectbir sınıf tanımı döndürdüğünden, genellikle örnek oluşturmanın ilk adımı olarak kullanılır. GetObjectkullanma hakkında daha fazla bilgi için bkz. C++ kullanarak Örnek Oluşturma ve Bildirme.