2011-03-16 8 views
5

आप WMI नेमस्पेस के लिए कैसे पूछते हैं?आप WMI नेमस्पेस के लिए कैसे पूछते हैं?

तो मैं क्योंकि मैंने पढ़ा है कि वे बाहर निकल जाता है WMI नामस्थान के बारे में पता है और मैं जानता हूँ कि मैं कहता हूँ से कनेक्ट कर सकते हैं:

root\cimv2 

मेरा प्रश्न क्या हुआ अगर मुझे नहीं पता था क्या नामस्थान वहाँ थे है, मैं कैसे होगा उपलब्ध नेमस्पेस के लिए पूछताछ के बारे में जाओ?

मैं बस WMI की खोज करना चाहता हूं और प्रत्येक नेमस्पेस को देखना नहीं चाहता हूं।

मैं डब्ल्यूबीईएमटेस्ट का उपयोग कर रहा हूं, लेकिन मैं कुछ भी ले जाऊंगा, .NET, winapi.h, आप क्या हैं।

उत्तर

3

सभी नामस्थानों को गिनने के लिए, आपको सबसे पहले root नामस्थान से कनेक्ट करना होगा, सभी __NAMESPACE उदाहरणों के लिए क्वेरी, और प्रत्येक उदाहरण के लिए इस प्रक्रिया को दोबारा दोहराएं।

जांच इन नमूनों

डेल्फी

procedure GetListWMINameSpaces(const RootNameSpace:String;const List :TStrings;ReportException:Boolean=True);//recursive function 
var 
    objSWbemLocator : OleVariant; 
    objWMIService : OleVariant; 
    colItems  : OLEVariant; 
    colItem   : OLEVariant; 
    oEnum   : IEnumvariant; 
    iValue   : LongWord; 
    sValue   : string; 
begin 
try 
    objSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator'); 
    objWMIService := objSWbemLocator.ConnectServer(wbemLocalhost, RootNameSpace, '', ''); 
    colItems  := objWMIService.InstancesOf('__NAMESPACE'); 
    oEnum   := IUnknown(colItems._NewEnum) as IEnumVariant; 
    while oEnum.Next(1, colItem, iValue) = 0 do 
    begin 
    sValue:=VarStrNull(colItem.Name); 
    colItem:=Unassigned; 
    List.Add(RootNameSpace+'\'+sValue); 
    GetListWMINameSpaces(RootNameSpace+'\'+sValue,List);//recursive 
    end; 
except 
    if ReportException then 
    raise; 
end; 
end; 

VBScript

strComputer = "." 
Call EnumNameSpaces("root") 

Sub EnumNameSpaces(strNameSpace) 
    WScript.Echo strNameSpace 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & _ 
     "\" & strNameSpace) 
    Set colNameSpaces = objWMIService.InstancesOf("__NAMESPACE") 
    For Each objNameSpace In colNameSpaces 
     Call EnumNameSpaces(strNameSpace & "\" & objNameSpace.Name) 
    Next 
End Sub 
10

मैं समझता हूँ कि आप अपने जवाब मिल गया लेकिन दिखाने के लिए कितना आसान है PowerShell में है प्राप्त करना चाहता था नामस्थानों की एक सूची:

Get-WMIObject -namespace "root" -class "__Namespace" | Select Name 
1

(LINQPad में) सर्वर सी # में नाम के एक सर्वर के लिए सभी (रूट) नामस्थान के लिए सभी नाम स्थान Name संपत्ति मूल्यों को सूचीबद्ध करने के:

ManagementClass nsClass = 
    new ManagementClass(
     new ManagementScope(@"\\server\root"), 
     new ManagementPath("__namespace"), 
     null); 

foreach(ManagementObject ns in nsClass.GetInstances()) 
{ 
    ns["Name"].Dump(); 
} 

ध्यान दें कि Dump विधि सिर्फ एक मूल्य के आउटपुट ; यदि आप LINQPad का उपयोग नहीं कर रहे हैं तो आप Name संपत्ति मान के साथ कुछ और करना चाहते हैं।

1

पायथन के लिए (अपेक्षित WMI और pyWin32 एक्सटेंशन स्थापित के साथ):

import wmi 
c = wmi.WMI (moniker='//./root') 
wql = "SELECT * FROM __NAMESPACE" 

for __NAMESPACE in c.query(wql): 
    print __NAMESPACE.Name 
0

उपयोग Get-CimInstance -Query "SELECT * FROM __NAMESPACE" -Namespace "root" powershell से।

यह भी विंडोज नैनो सर्वर

0

लिए काम करता है आप VBScript उपयोग कर सकते हैं root से सभी Namespaces मिलता है।

यहाँ नमूना स्क्रिप्ट

On Error Resume Next 
strComputer = "." 
Wscript.Echo "-----------------------------------" 
Wscript.Echo "Namespaces" 
Wscript.Echo "-----------------------------------" 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root") 
Set colItems = objWMIService.ExecQuery(_ 
    "SELECT * FROM __NAMESPACE",,48) 
For Each objItem in colItems 
    Wscript.Echo "Name: " & objItem.Name 
Next 

अपेक्षित उत्पादन होता है

Microsoft (R) Windows Script Host Version 5.8 
Copyright (C) Microsoft Corporation. All rights reserved. 

----------------------------------- 
Namespaces 
----------------------------------- 
Name: subscription 
Name: DEFAULT 
Name: MicrosoftWmiNet 
Name: CIMV2 
Name: Cli 
Name: nap 
Name: MicrosoftIISv2 
Name: SECURITY 
Name: SecurityCenter2 
Name: RSOP 
Name: WebAdministration 
Name: WMI 
Name: OpenHardwareMonitor 
Name: directory 
Name: Policy 
Name: Interop 
Name: ServiceModel 
Name: SecurityCenter 
Name: Microsoft 
Name: aspnet 
संबंधित मुद्दे