PowerShell
WMI और CIM
खोज…
टिप्पणियों
CIM बनाम WMI
PowerShell 3.0 के रूप में, PowerShell, WMI और CIM में प्रबंधन कक्षाओं के साथ काम करने के दो तरीके हैं। PowerShell 1.0 और 2.0 ने केवल WMI- मॉड्यूल का समर्थन किया जो अब नए और बेहतर CIM- मॉड्यूल द्वारा सुपरसाइड किया गया है। PowerShell के बाद के रिलीज़ में, WMI-cmdlets को निकाल दिया जाएगा।
CIM और WMI- मॉड्यूल की तुलना:
CIM-cmdlet | WMI-cmdlet | यह क्या करता है |
---|---|---|
Get-CimInstance | Get-WmiObject | एक वर्ग के लिए CIM / WMI-ऑब्जेक्ट्स प्राप्त करता है |
आह्वान-CimMethod | आह्वान-WmiMethod | CIM / WMI- श्रेणी पद्धति लागू करता है |
रजिस्टर-CimIndicationEvent | रजिस्टर-WmiEvent | एक CIM / WMI-वर्ग के लिए रजिस्टरों की घटना |
निकालें-CimInstance | निकालें-WmiObject | CIM / WMI- ऑब्जेक्ट निकालें |
सेट CimInstance | सेट WmiInstance | अद्यतन / बचत CIM / WMI- ऑब्जेक्ट |
Get-CimAssociatedInstance | एन / ए | संबद्ध उदाहरण (लिंक की गई वस्तु / कक्षाएं) प्राप्त करें |
Get-CimClass | Get-WmiObject -List | सूची CIM / WMI- वर्ग |
नई CimInstance | एन / ए | नई CIM- ऑब्जेक्ट बनाएँ |
Get-CimSession | एन / ए | CIM- सत्रों को सूचीबद्ध करता है |
नई CimSession | एन / ए | नया CIM-session बनाएँ |
नई CimSessionOption | एन / ए | सत्र विकल्पों के साथ ऑब्जेक्ट बनाता है; प्रोटोकॉल, एन्कोडिंग, एन्क्रिप्शन को अक्षम करना आदि ( New-CimSession साथ उपयोग के लिए) |
निकालें-CimSession | एन / ए | निकालता है / CIM- सत्र रोकता है |
अतिरिक्त संसाधन
क्या मुझे Windows PowerShell के साथ CIM या WMI का उपयोग करना चाहिए? @ अरे, स्क्रिप्टिंग गाइ! ब्लॉग
वस्तुओं को छोड़ना
CIM / WMI का उपयोग आमतौर पर किसी डिवाइस पर जानकारी या कॉन्फ़िगरेशन को क्वेरी करने के लिए किया जाता है। Thof एक वर्ग जो कॉन्फ़िगरेशन, प्रक्रिया, उपयोगकर्ता आदि का प्रतिनिधित्व करता है। PowerShell में इन वर्गों और उदाहरणों तक पहुँचने के कई तरीके हैं, लेकिन सबसे आम तरीके Get-CimInstance
(CIM) या Get-WmiObject
(WMI) cmdlets का उपयोग करके हैं।
CIM-class के लिए सभी ऑब्जेक्ट्स को सूचीबद्ध करें
आप एक वर्ग के सभी उदाहरणों को सूचीबद्ध कर सकते हैं।
CIM:
> Get-CimInstance -ClassName Win32_Process
ProcessId Name HandleCount WorkingSetSize VirtualSize
--------- ---- ----------- -------------- -----------
0 System Idle Process 0 4096 65536
4 System 1459 32768 3563520
480 Secure System 0 3731456 0
484 smss.exe 52 372736 2199029891072
....
....
WMI:
Get-WmiObject -Class Win32_Process
एक फिल्टर का उपयोग करना
आप केवल CIM / WMI- श्रेणी के विशिष्ट उदाहरण प्राप्त करने के लिए फ़िल्टर लागू कर सकते हैं। फ़िल्टर WQL
(डिफ़ॉल्ट) या CQL (ऐड- -QueryDialect CQL
) का उपयोग करके लिखे गए हैं। -Filter
का उपयोग करता है WHERE
एक पूर्ण WQL / CQL-क्वेरी के भाग।
CIM:
Get-CimInstance -ClassName Win32_Process -Filter "Name = 'powershell.exe'"
ProcessId Name HandleCount WorkingSetSize VirtualSize
--------- ---- ----------- -------------- -----------
4800 powershell.exe 676 88305664 2199697199104
WMI:
Get-WmiObject -Class Win32_Process -Filter "Name = 'powershell.exe'"
...
Caption : powershell.exe
CommandLine : "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
CreationClassName : Win32_Process
CreationDate : 20160913184324.393887+120
CSCreationClassName : Win32_ComputerSystem
CSName : STACKOVERFLOW-PC
Description : powershell.exe
ExecutablePath : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
ExecutionState :
Handle : 4800
HandleCount : 673
....
WQL-क्वेरी का उपयोग करना:
आप WQL / CQL-क्वेरी का उपयोग क्वेरी और फ़िल्टर इंस्टेंस के लिए भी कर सकते हैं।
CIM:
Get-CimInstance -Query "SELECT * FROM Win32_Process WHERE Name = 'powershell.exe'"
ProcessId Name HandleCount WorkingSetSize VirtualSize
--------- ---- ----------- -------------- -----------
4800 powershell.exe 673 88387584 2199696674816
एक अलग नामस्थान में वस्तुओं को छोड़ना:
CIM:
> Get-CimInstance -Namespace "root/SecurityCenter2" -ClassName AntiVirusProduct
displayName : Windows Defender
instanceGuid : {D68DDC3A-831F-4fae-9E44-DA132C1ACF46}
pathToSignedProductExe : %ProgramFiles%\Windows Defender\MSASCui.exe
pathToSignedReportingExe : %ProgramFiles%\Windows Defender\MsMpeng.exe
productState : 397568
timestamp : Fri, 09 Sep 2016 21:26:41 GMT
PSComputerName :
WMI:
> Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct
__GENUS : 2
__CLASS : AntiVirusProduct
__SUPERCLASS :
__DYNASTY : AntiVirusProduct
__RELPATH : AntiVirusProduct.instanceGuid="{D68DDC3A-831F-4fae-9E44-DA132C1ACF46}"
__PROPERTY_COUNT : 6
__DERIVATION : {}
__SERVER : STACKOVERFLOW-PC
__NAMESPACE : ROOT\SecurityCenter2
__PATH : \\STACKOVERFLOW-PC\ROOT\SecurityCenter2:AntiVirusProduct.instanceGuid="{D68DDC3A-831F-4fae-9E44-DA132C1ACF46}"
displayName : Windows Defender
instanceGuid : {D68DDC3A-831F-4fae-9E44-DA132C1ACF46}
pathToSignedProductExe : %ProgramFiles%\Windows Defender\MSASCui.exe
pathToSignedReportingExe : %ProgramFiles%\Windows Defender\MsMpeng.exe
productState : 397568
timestamp : Fri, 09 Sep 2016 21:26:41 GMT
PSComputerName : STACKOVERFLOW-PC
कक्षाएं और नाम स्थान
CIM और WMI में कई वर्ग उपलब्ध हैं जिन्हें कई नामस्थानों में विभाजित किया गया है। विंडोज में सबसे आम (और डिफ़ॉल्ट) नामस्थान root/cimv2
। Righ वर्ग खोजने के लिए, यह सभी को सूचीबद्ध करने या खोज करने के लिए उपयोगी हो सकता है।
उपलब्ध कक्षाओं की सूची बनाएं
आप सभी उपलब्ध कक्षाओं को कंप्यूटर पर डिफ़ॉल्ट नाम स्थान ( root/cimv2
) में सूचीबद्ध कर सकते हैं।
CIM:
Get-CimClass
WMI:
Get-WmiObject -List
एक वर्ग के लिए खोजें
आप वाइल्डकार्ड का उपयोग करके विशिष्ट वर्गों की खोज कर सकते हैं। Ex: शब्द process
वाली कक्षाएं ज्ञात कीजिए।
CIM:
> Get-CimClass -ClassName "*Process*"
NameSpace: ROOT/CIMV2
CimClassName CimClassMethods CimClassProperties
------------ --------------- ------------------
Win32_ProcessTrace {} {SECURITY_DESCRIPTOR, TIME_CREATED, ParentProcessID, ProcessID...}
Win32_ProcessStartTrace {} {SECURITY_DESCRIPTOR, TIME_CREATED, ParentProcessID, ProcessID...}
Win32_ProcessStopTrace {} {SECURITY_DESCRIPTOR, TIME_CREATED, ParentProcessID, ProcessID...}
CIM_Process {} {Caption, Description, InstallDate, Name...}
Win32_Process {Create, Terminat... {Caption, Description, InstallDate, Name...}
CIM_Processor {SetPowerState, R... {Caption, Description, InstallDate, Name...}
Win32_Processor {SetPowerState, R... {Caption, Description, InstallDate, Name...}
...
WMI:
Get-WmiObject -List -Class "*Process*"
एक अलग नामस्थान में कक्षाओं की सूची बनाएं
रूट नेमस्पेस को बस root
कहा जाता root
। -NameSpace
पैरामीटर का उपयोग करके आप अन्य नामस्थान में कक्षाएं सूचीबद्ध कर सकते हैं।
CIM:
> Get-CimClass -Namespace "root/SecurityCenter2"
NameSpace: ROOT/SecurityCenter2
CimClassName CimClassMethods CimClassProperties
------------ --------------- ------------------
....
AntiSpywareProduct {} {displayName, instanceGuid, pathToSignedProductExe, pathToSignedReportingE...
AntiVirusProduct {} {displayName, instanceGuid, pathToSignedProductExe, pathToSignedReportingE...
FirewallProduct {} {displayName, instanceGuid, pathToSignedProductExe, pathToSignedReportingE...
WMI:
Get-WmiObject -Class "__Namespace" -Namespace "root"
उपलब्ध नामस्थानों की सूची बनाएं
उपलब्ध चाइल्ड-नेमस्पेस ऑफ़ root
(या किसी अन्य नेमस्पेस) को खोजने के लिए, उस नामस्थान के लिए __NAMESPACE
में ऑब्जेक्ट क्वेरी करें।
CIM:
> Get-CimInstance -Namespace "root" -ClassName "__Namespace"
Name PSComputerName
---- --------------
subscription
DEFAULT
CIMV2
msdtc
Cli
SECURITY
HyperVCluster
SecurityCenter2
RSOP
PEH
StandardCimv2
WMI
directory
Policy
virtualization
Interop
Hardware
ServiceModel
SecurityCenter
Microsoft
aspnet
Appv
WMI:
Get-WmiObject -List -Namespace "root"