Get-WmiObject -Filter 或不使用 NULL

Get-WmiObject -Filter OR not working with NULL

这些 cmdlet 有效:

Get-WmiObject Win32_PNPSignedDriver -Filter "DriverProviderName <> NULL"
Get-WmiObject Win32_PNPSignedDriver -Filter "DriverProviderName <> 'Microsoft'"

我似乎无法将它们与 OR 语句结合起来,我也不知道为什么: Get-WmiObject Win32_PNPSignedDriver -Filter "DriverProviderName <> 'Microsoft' OR DriverProviderName <> NULL"

上面的命令运行,但不排除 NULL 条目最后一个是我的 Win10 PC 上的传真。

似乎暗示我已将其标记为正确,但是它们与字符串匹配,而我需要排除 NULL 对象。我怀疑这与 NULL and/or 缺少单引号有关。

关于translating from English sentences into logical form当把英文句子翻译成逻辑形式时,...,短语“neither A nor B”被翻译成“not A and not B”。 使用

Get-WmiObject Win32_PNPSignedDriver -Filter `
  "DriverProviderName <> 'Microsoft' AND DriverProviderName IS NOT NULL"

注:见Translating “neither…nor” into a mathematical logical expression as well; applying de Morgan's laws, the following code surprisingly works although uses undocumented NOT logical operator in a WQL query

Get-WmiObject Win32_PNPSignedDriver -Filter `
  "NOT (DriverProviderName = 'Microsoft' OR DriverProviderName IS NULL)"

在上面的 PowerShell 代码示例中使用了 backtick to split commands over multiple lines 以提高可读性…