Powershell - 过滤器不接受两个条件

Powershell -Filter not accepting two conditions

我有这个命令

$remoteuserlist = Get-WmiObject Win32_UserAccount `
-filter "LocalAccount =True" –computername $PC -verbose

我是 运行 获取计算机上的本地帐户列表。我还想从我的列表中排除来宾帐户。所以我尝试了这样的事情

$remoteuserlist = Get-WmiObject Win32_UserAccount `
-filter {LocalAccount =True -and Name -ne "Guest" –computername $PC -verbose}

但我收到无效查询错误。有人可以解释我大概是非常明显的错误吗?

谢谢

WQL "not equal" 运算符是 != 或 <>。

WQL Operators

$remoteuserlist = Get-WmiObject Win32_UserAccount -filter {LocalAccount = "True" and Name != "Guest"} –computername $PC -verbose
  1. 您混合了 WMI 语法和 PowerShell 语法
  2. 包含过滤器的括号围绕 Get-WmiObject
  3. 的其他参数

如果您有一堆旧的 VBScript WMI 查询,您可以使用 Get-WMIObject -Query 参数来重用它们。

$remoteuserlist = Get-WmiObject -query "SELECT * FROM Win32_UserAccount WHERE LocalAccount = 'True' and Name != 'Guest'" –computername $PC -verbose

不是开创性的,但如果您不想重写查询,它会有所帮助。