代码之家  ›  专栏  ›  技术社区  ›  ΩmegaMan

按文字列名称筛选

  •  1
  • ΩmegaMan  · 技术社区  · 6 年前

    对我的本地IIS使用命令 gci "IIS:\Sites\My Website" 它获取一个输出,其中有一个列名为 Type :

    enter image description here

    但是我不能过滤 通过 该列如

    | Where-Object {$_.Type -eq 'application'}

    因为 类型 是关键字(?)也许吧。

    如何告诉过滤器使用文本列名?


    原始输出由 gci 命令在 Webadministration 模块:

    Import-Module Webadministration
    
    gci "IIS:\Sites\My Website" 
    

    请注意,IIS网站的实际名称必须进入“我的网站” 如上所示。

    不过滤掉的完整命令 directory 数据行,只保留 application :

    gci "IIS:\Sites\My Website" | Where-Object {$_.Type -eq 'application'}

    2 回复  |  直到 6 年前
        1
  •  1
  •   T-Me    6 年前

    编辑: 类型属性可以用 $_.nodetype . 所以剩下的答案就不需要了


    创建自己的列名。这样,您就可以按新对象筛选对象:

    | Select-Object YourDesiredColumns,@{Name='NewColumn';Expression={$_.Type}}
    

    可能是这样的:

    gci "IIS:\Sites\My Website" | Select-Object *,@{Name='Bob';Expression={$_.NodeType}} | Where-Object {$_.Bob -eq 'application'} | ft
    
        2
  •  1
  •   LotPings    6 年前

    使用来自此处字符串的数据和来自csv的convertFrom进行模拟,不会产生问题:

    $Data = @"
    Type,Application
    application,ArchiveServices
    directory,aspnet_client
    "@ | ConvertFrom-Csv
    
    $Data | Where-Object {$_.Type -eq 'application'}
    $Data | Where-Object Type -eq 'application'