Powershell过滤器无法正常工作

时间:2015-07-24 09:06:47

标签: powershell filter powershell-v2.0

我有以下简单的代码:

remove-item -path $path | where($_ -like "*IE*")

但由于某种原因,由于通配符而导致错误

1 个答案:

答案 0 :(得分:0)

上面的脚本有一些错误。我会尽力帮助你。

首先,Remove-Item cmdlet不为where行提供任何输出。你必须先得到它。我要假设因为你想过滤掉与IE不匹配的项目,你将从目录中获取多个文件。如果这只是一个文件,那么您需要做的就是Remove-Item -Path $ Path。如果它是目录,则cmdlet为Get-ChildItem

Get-ChildItem -Path $Path

现在您拥有了$ Path中的所有商品,我们需要对其进行过滤。您可以使用Where-Object执行此操作。像这样......

Get-ChildItem -Path $Path | Where-Object

这是下一个问题的来源。当我认为你想要匹配时,你正在使用。此外,您的$ _将表示整个对象。我们需要匹配对象的属性。它看起来像这样

Get-ChildItem -Path $Path | Where-Object -FilterScript { $_.PROPERTYNAME -match "IE"}

现在我们有了对象,并且我们对它们进行了排序,是时候将它们删除了。我们使用上面的Remove-Item cmdlet执行此操作。请注意,这一次,它是在管道的最后,而不是开始。

Get-ChildItem -Path $Path | Where-Object -FilterScript { $_.PROPERTYNAME -match "IE"} | Remove-Item

如果您不想确认每一个(并且您确定这些是您要删除的项目),请在Remove-Item之后添加-Confirm:$ false。否则,您必须在控制台中确认要删除的每个文件。

我真的希望这有帮助!