【问题标题】:Powershell -Filter not accepting two conditionsPowershell - 过滤器不接受两个条件
【发布时间】:2015-01-29 00:38:44
【问题描述】:

我有这个命令

$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}

但我收到无效的查询错误。有人能解释一下我可能非常明显的错误吗?

谢谢

【问题讨论】:

  • 过滤器是一个 WMI 查询,但该查询的 -not ... 位看起来像 powershell 代码。大概这就是问题所在,不是吗?

标签: powershell wmi user-accounts


【解决方案1】:

WQL“不等于”运算符是 != 或 。

WQL Operators

【讨论】:

    【解决方案2】:
    $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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-30
        • 2019-12-15
        • 1970-01-01
        • 2018-01-09
        • 2018-04-15
        相关资源
        最近更新 更多