參照:About_WQLshell
WQL是用於獲取PowerShell中的WMI(Windows Management Instrumentation)對象的WMI查詢語言(WQL)。ide
WQL 查詢比標準 Get-WmiObject 命令要快一些,並且在數百個系統上運行命令時,性能獲得了改善。性能
WQL查詢語句能夠接在「Get-WmiObject」和「Get-CimInstance」後使用,結構以下學習
Get-WmiObject -Query "<WQL Query> "lua
Get-CimInstance -Query "<WQL Query>"code
WQL查詢語句的基本結構:對象
Select <property> from <WMI-class> [where <property> <operator> <value>]blog
例子:查詢Notepad進程的詳細信息進程
Get-WmiObject -Query {Select * from Win32_Process where Name = 'Notepad.exe'}ip
命令輸出:
__GENUS : 2 __CLASS : Win32_Process __SUPERCLASS : CIM_Process __DYNASTY : CIM_ManagedSystemElement __RELPATH : Win32_Process.Handle="5444" __PROPERTY_COUNT : 45 __DERIVATION : {CIM_Process, CIM_LogicalElement, CIM_ManagedSystemElement} __SERVER : SZ-Test1119 __NAMESPACE : root\cimv2 __PATH : \\SZ-GADZ050761\root\cimv2:Win32_Process.Handle="5444" Caption : notepad.exe CommandLine : "C:\WINDOWS\system32\notepad.exe" CreationClassName : Win32_Process CreationDate : 20201211175155.893933+480 CSCreationClassName : Win32_ComputerSystem CSName : SZ-Test1119 Description : notepad.exe ExecutablePath : C:\WINDOWS\system32\notepad.exe ExecutionState : Handle : 5444 HandleCount : 238 InstallDate : KernelModeTime : 781250 MaximumWorkingSetSize : 1380 MinimumWorkingSetSize : 200 Name : notepad.exe OSCreationClassName : Win32_OperatingSystem OSName : Microsoft Windows 10 企業版|C:\WINDOWS|\Device\Harddisk0\Partition2 OtherOperationCount : 110 OtherTransferCount : 2584 PageFaults : 4035 PageFileUsage : 3108 ParentProcessId : 3980 PeakPageFileUsage : 3108 PeakVirtualSize : 2203492605952 PeakWorkingSetSize : 15484 Priority : 8 PrivatePageCount : 3182592 ProcessId : 5444 QuotaNonPagedPoolUsage : 14 QuotaPagedPoolUsage : 244 QuotaPeakNonPagedPoolUsage : 14 QuotaPeakPagedPoolUsage : 244 ReadOperationCount : 1 ReadTransferCount : 60 SessionId : 1 Status : TerminationDate : ThreadCount : 7 UserModeTime : 0 VirtualSize : 2203492605952 WindowsVersion : 10.0.19042 WorkingSetSize : 15851520 WriteOperationCount : 0 WriteTransferCount : 0 PSComputerName : SZ-GADZ050761 ProcessName : notepad.exe Handles : 238 VM : 2203492605952 WS : 15851520 Path : C:\WINDOWS\system32\notepad.exe
Get-CimInstance -Query "Select * from CIM_Process where Name = 'Notepad.exe'"
命令輸出:
ProcessId Name HandleCount WorkingSetSize VirtualSize --------- ---- ----------- -------------- ----------- 5444 notepad.exe 237 15912960 2203472412672
使用 「Get-CimInstance -Query」 的時候,後面的 WQL查詢語句,不要用{},須要用""括起來,不然會報錯。
注:使用 { }括起來的時候被做爲腳本塊解析了,腳本塊中的 WQL沒有輸入。
PS C:\> Get-CimInstance -Query {Select * from Win32_Process where Name = 'Notepad.exe'} Get-CimInstance : 沒法評估參數「Query」,由於其參數被指定爲腳本塊,且沒有輸入。沒法評估沒有輸入的腳本塊。 所在位置 行:1 字符: 24 + ... tance -Query {Select * from Win32_Process where Name = 'Notepad.exe'} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : MetadataError: (:) [Get-CimInstance], ParameterBindingException + FullyQualifiedErrorId : ScriptBlockArgumentNoInput,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInsta nceCommand
附 WQL查詢語言中Where語句中有效的運算符:
Operator Description ----------------------- = Equal != Not equal <> Not equal < Less than > Greater than <= Less than or equal >= Greater than or equal LIKE Wildcard match IS Evaluates null ISNOT Evaluates not null ISA Evaluates a member of a WMI class
目錄:返回個人PowerShell學習筆記:http://www.javashuo.com/article/p-ghbmtizk-nx.html