按文字列名过滤

时间:2019-01-03 14:17:02

标签: powershell

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

enter image description here

但是我无法通过 过滤该列,例如

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

因为Type可能是关键字(?)。

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


gci模块中的Webadministration命令生成的原始输出:

Import-Module Webadministration

gci "IIS:\Sites\My Website" 

请注意,IIS网站的实际名称必须输入上面显示的“我的网站”

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

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

2 个答案:

答案 0 :(得分:1)

使用来自此处的字符串和ConvertFrom-Csv的数据进行模拟不会带来问题:

SELECT col1,
       col2,
       DECODE(
                 myVariable,
                 NULL,
                 0,
                 myVariable
             )
FROM mytable
group by col1, col2;

答案 1 :(得分:1)

编辑: 可以使用$_.nodetype找到Type属性。 因此,此答案的其余部分不需要


创建您自己的列名。这样,您就可以通过新对象过滤对象:

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

可能是这样的:

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