我正在尝试删除一些孤立的文件夹。我有一个孤立的文件夹名称列表,我试图找到相应的File对象。不幸的是,我似乎无法像我期望的那样让-in
条款工作。
一个有点人为的例子:
$orphans = ls | select Name
ls | ?{$_.Name -in $orphans}
ls -Include $orphans
不返回任何文件。
答案 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}