由于 $_ 指代当前管道对象,因此可以访问它的属性进行测试。
例如,我们可以看看 WMI 中的 Win32_SystemDriver 类。 一个特定的系统上可能有数百个系统驱动程序,但是你可能只对特定一些系统驱动程序感兴趣,例如那些当前正在运行的程序。 对于 Win32_SystemDriver 类,相关属性是 State 。 你可以筛选系统驱动程序,通过键入以下内容仅选择正在运行的驱动程序:

PS> Get-CimInstance -Class Win32_SystemDriver |
  Where-Object {$_.State -eq 'Running'}

执行上面脚本,得到以下结果:

DisplayName : Microsoft Windows 可信运行时安全服务
Name        : WindowsTrustedRTProxy
State       : Running
Status      : OK
Started     : True

DisplayName : WinQuic
Name        : WinQuic
State       : Running
Status      : OK
Started     : True

DisplayName : Microsoft Windows Management Interface for ACPI
Name        : WmiAcpi
State       : Running
Status      : OK
Started     : True

DisplayName : Windows Overlay File System Filter Driver
Name        : Wof
State       : Running
Status      : OK
Started     : True

... ...

上面脚本会生成一个较长的列表。 你可能还希望进行筛选,以通过测试 StartMode 值仅选择自动启动的驱动程序集:

Get-CimInstance -Class Win32_SystemDriver |
  Where-Object {$_.State -eq "Running"} |
    Where-Object {$_.StartMode -eq "Auto"}

执行上面脚本,得到以下结果:

PS C:\Users\maxsu> Get-CimInstance -Class Win32_SystemDriver |
>>   Where-Object {$_.State -eq "Running"} |
>>     Where-Object {$_.StartMode -eq "Auto"}


DisplayName : Windows Cloud Files Filter Driver
Name        : CldFlt
State       : Running
Status      : OK
Started     : True

DisplayName : CMB8100
Name        : CMB8100
State       : Running
Status      : OK
Started     : True

DisplayName : CMBProtector
Name        : CMBProtector
State       : Running
Status      : OK
Started     : True

DisplayName : VMware hcmon
Name        : hcmon
State       : Running
Status      : OK
Started     : True

DisplayName : Intel HAXM Service
Name        : IntelHaxm
State       : Running
Status      : OK
Started     : True
... ...

这为我们提供了大量不再需要的信息,因为我们知道驱动程序正在运行。 事实上,此时我们可能需要的唯一信息就是名称和显示名。 下面的命令仅包括这两种属性,从而使输出更简单:

Get-CimInstance -Class Win32_SystemDriver |
  Where-Object {$_.State -eq "Running"} |
    Where-Object {$_.StartMode -eq "Manual"} |
      Format-Table -Property Name,DisplayName

执行上面脚本,得到以下结果:

PS C:\Users\maxsu> Get-CimInstance -Class Win32_SystemDriver |
>>   Where-Object {$_.State -eq "Running"} |
>>     Where-Object {$_.StartMode -eq "Manual"} |
>>       Format-Table -Property Name,DisplayName

Name                 DisplayName
----                 -----------
acpipagr             ACPI 处理器聚合器驱动程序
athr                 Dell Extensible Wireless LAN device driver
bowser               浏览器
BtFilter             BtFilter
BTHUSB               蓝牙无线电收发器 USB 驱动程序
CompositeBus         复合总线枚举器驱动程序
condrv               Console Driver
fastfat              FAT12/16/32 File System Driver
HDAudBus             用于 High Definition Audio 的 Microsoft UAA 总线驱动程序
HidUsb               Microsoft HID Class Driver
HTTP                 HTTP Service
igfx                 igfx
IntcAzAudAddService  Service for Realtek HD Audio (WDM)
IntcDAud             英特尔(R) 显示器音频
intelppm             Intel Processor Driver
kbdclass             Keyboard Class Driver
kbdhid               Keyboard HID Driver
kdnic                Microsoft 内核调试网络微型端口(NDIS 6.20)
ksthunk              Kernel Streaming Thunks
MEIx64               Intel(R) Management Engine Interface
monitor              Microsoft Monitor Class Function Driver Service
mouclass             Mouse Class Driver
mouhid               Mouse HID Driver
mpsdrv               Windows Defender Firewall Authorization Driver
mrxsmb               SMB MiniRedirector Wrapper and Engine
mrxsmb20             SMB 2.0 MiniRedirector
NativeWifiP          NativeWiFi 筛选器
NdisTapi             远程访问 NDIS TAPI 驱动程序
Ndisuio              NDIS Usermode I/O Protocol
NdisVirtualBus       Microsoft 虚拟网络适配器枚举器
NdisWan              远程访问 NDIS WAN 驱动程序
ndproxy              NDIS Proxy Driver
Ntfs                 Ntfs
NVHDA                Service for NVIDIA High Definition Audio Driver
nvlddmkm             nvlddmkm
nvvad_WaveExtensible NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
nvvhci               NVVHCI Enumerator Service
PptpMiniport         WAN 微型端口(PPTP)
QWAVEdrv             QWAVE driver
RasAgileVpn          WAN 微型端口(IKEv2)
Rasl2tp              WAN 微型端口(L2TP)
RasPppoe             远程访问 PPPOE 驱动程序
RasSstp              WAN 微型端口(SSTP)
rdpbus               远程桌面设备重定向程序总线驱动程序
RdpVideoMiniport     Remote Desktop Video Miniport Driver
RTSUER               Realtek USB Card Reader - UER
Serenum              Serenum Filter Driver
Serial               串行端口驱动程序
srv2                 Server SMB 2.xxx Driver
srvnet               srvnet
swenum               软件总线驱动程序
TPM                  TPM
Ucx01000             USB Host Support Library
UEFI                 Microsoft UEFI 驱动程序
umbus                UMBus Enumerator Driver
usbccgp              Microsoft USB 通用父驱动程序
USBHUB3              SuperSpeed 集线器
USBXHCI              符合 USB xHCI 的主机控制器
Vid                  Vid
vwifibus             Virtual Wireless Bus Driver
vwifimp              Virtual WiFi Miniport Service
WinQuic              WinQuic
WmiAcpi              Microsoft Windows Management Interface for ACPI

上面的命令包含两个 Where-Object 元素,但是可以使用 -and 逻辑运算符将其表示为一个 Where-Object 元素,如下所示:

Get-CimInstance -Class Win32_SystemDriver |
  Where-Object {($_.State -eq 'Running') -and ($_.StartMode -eq 'Manual')} |
    Format-Table -Property Name,DisplayName

下表中列出了标准逻辑运算符 -

逻辑运算符 含义 示例(返回 True)
-and 逻辑 and;如果两侧都为 True,则返回 True (1 -eq 1) -and (2 -eq 2)
-or 逻辑 or;如果某一侧为 True,则返回 True (1 -eq 1) -or (1 -eq 2)
-not 逻辑 not;反转 True 和 False -not (1 -eq 2)
! 逻辑 not;反转 True 和 False !(1 -eq 2)


 

声明:以上内容为个人学习过程的笔记或总结,不保证完全正确,请谨慎参考使用。部分内容整理自互联网,官方文档等,恕不一一列出,如果有侵犯到您的权益,请联系我们删除。