【问题标题】:Formatting WQL Query in powershell在 powershell 中格式化 WQL 查询
【发布时间】:2017-11-29 13:28:16
【问题描述】:

我正在尝试使用以下代码在 powershell 中格式化 WQL 查询以仅查找有线以太网适配器

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "Name LIKE '%Ethernet%' OR '%Gigabit%'" -CN "." | Out-Host

但是,我对 SQL/WQL 了解不多,我不确定我是否在 PS 中正确格式化 OR 语句,如果有人能指出我正确的方向,我将不胜感激。

谢谢!

【问题讨论】:

    标签: sql powershell wmi wql


    【解决方案1】:

    这是WQL operatorsthe WQL WHERE clause 的文档

    根据文档,您的方法是正确的,但是您的语法错误。如果您使用的是 PSv3+,我建议您使用 CIM cmdlet,因为 WMI 的 cmdlet 在技术上已被弃用。

    Get-CimInstance -Query 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Name LIKE "%ethernet%" OR Name LIKE "%gigabit%"'
    

    在你的例子中:

    Get-WmiObject -Class 'Win32_NetworkAdapterConfiguration' -Filter 'Name LIKE "%ethernet%" OR Name LIKE "%gigabit%"' -ComputerName '.'
    

    此外,@Avshalom 是正确的,因为您的字段是错误的。您想查看“描述”。

    Get-WmiObject -Filter 'Description LIKE "%ethernet%" OR Description LIKE "%gigabit%"' -Class 'Win32_NetworkAdapterConfiguration' -ComputerName '.'
    

    【讨论】:

    • 谢谢!我已经整理好了
    【解决方案2】:

    Win32_NetworkAdapterConfiguration 没有 Name 属性。

    无论如何,关于您的问题,您可以通过这种方式使用过滤器,在示例中,我使用的是有效属性,例如 ServiceName

    Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "ServiceName like '%msloop%' or ServiceName like '%tunnel%'"
    

    另外,您不必为本地计算机提供ComputerName 参数,这是默认值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 2018-01-02
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多