Powershell Where-Object -in子句

时间:2015-04-28 12:23:40

标签: powershell

我正在尝试删除一些孤立的文件夹。我有一个孤立的文件夹名称列表,我试图找到相应的File对象。不幸的是,我似乎无法像我期望的那样让-in条款工作。

一个有点人为的例子:

$orphans = ls | select Name
ls | ?{$_.Name -in $orphans}
ls -Include $orphans

不返回任何文件。

1 个答案:

答案 0 :(得分:4)

为了实现这一点,你需要做

$orphans = ls | select -ExpandProperty Name

或在Where-Clause

ls | ?{$_.Name -in $orphans.name}
代码中的

$orphans是一个带有name属性的对象数组。将该属性分解为一个简单的字符串数组,你应该得到你期望的结果。

我还假设代码示例只是......样本。一旦正常工作,该代码似乎是多余的。

Powershell v2

以上代码并未在Powershell v2上运行。 -ExpandProperty-contains的组合似乎可以解决问题:

$orphans = ls | select -ExpandProperty Name
ls | ?{$orphans -contains $_.Name}