Powershell 如何从树中删除所有隐藏的不需要的目录?

Powershell 如何从树中删除所有隐藏的不需要的目录?,powershell,powershell-4.0,Powershell,Powershell 4.0,我想使用从目录树中强制删除任何名为。不需要的的隐藏目录 我希望有一个足够简单的解决方案,让新手很容易理解和学习。我知道命令Get ChildItem和Remove Item,但我还不知道如何使用新类型的变量链接/管道它们。提供的Bash代码可以转换为以下代码: Get-Childitem *unwanted* -Recurse | Remove-Item -Confirm:$false -ErrorAction SilentlyContinue 根据权限的不同,您可能必须在第二个命令上使用-F

我想使用从目录树中强制删除任何名为
。不需要的
的隐藏目录


我希望有一个足够简单的解决方案,让新手很容易理解和学习。我知道命令
Get ChildItem
Remove Item
,但我还不知道如何使用新类型的变量链接/管道它们。

提供的Bash代码可以转换为以下代码:

Get-Childitem *unwanted* -Recurse | Remove-Item -Confirm:$false -ErrorAction SilentlyContinue
根据权限的不同,您可能必须在第二个命令上使用-Force参数。我还建议在任何生产环境中使用这些命令之前,对它们进行一些研究和测试。事情可能变得危险:)


我还将留下一篇关于PowerShell管道的好文章

提供的Bash代码可以翻译成以下代码:

Get-Childitem *unwanted* -Recurse | Remove-Item -Confirm:$false -ErrorAction SilentlyContinue
根据权限的不同,您可能必须在第二个命令上使用-Force参数。我还建议在任何生产环境中使用这些命令之前,对它们进行一些研究和测试。事情可能变得危险:)


我还将留下一篇关于PowerShell管道的好文章

您可以根据您的要求尝试类似的内容-

Get-ChildItem -path \\PathToYourFolder\ -recurse | where {$_.PSIsContainer -eq $true -and $_.Name -eq ".unwanted"} | Remove-Item
简单地说,
PowerShell
管道将左侧的
cmdlet
的输出作为输入传递给右侧的
cmdlet


命令
where{$\u.PSIsContainer-eq$true
使用所有文件系统对象的
PSIsContainer
属性仅选择文件夹,这些文件夹的
PSIsContainer
属性中的值为true($true)。

您可以根据需要尝试类似的操作-

Get-ChildItem -path \\PathToYourFolder\ -recurse | where {$_.PSIsContainer -eq $true -and $_.Name -eq ".unwanted"} | Remove-Item
Get-ChildItem -Force -Recurse -Directory -Filter .unwanted |
  Remove-Item -Force -Recurse -WhatIf
简单地说,
PowerShell
管道将左侧的
cmdlet
的输出作为输入传递给右侧的
cmdlet

命令
,其中{$\ PSIsContainer-eq$true
使用所有文件系统对象的
PSIsContainer
属性仅选择文件夹,这些文件夹的
PSIsContainer
属性中的值为true($true)

Get-ChildItem -Force -Recurse -Directory -Filter .unwanted |
  Remove-Item -Force -Recurse -WhatIf
-WhatIf
预览移除;移除它以执行实际移除

  • -需要强制
    ,以锁定隐藏项(如果允许,在Windows上的
    删除项
    的情况下,覆盖
    r
    (只读)属性)

  • -Recurse
    需要在整个子树中查找目录(
    Get ChildItem
    ),并在没有确认提示的情况下删除非空目录(
    remove Item

顺便说一句:使用
-Filter
是查找感兴趣目录的最有效方法,因为它在源位置进行筛选,而(暗示)使用
-Path
将使PowerShell首先枚举所有目录,然后进行筛选

-WhatIf
预览移除;移除它以执行实际移除

  • -需要强制
    ,以锁定隐藏项(如果允许,在Windows上的
    删除项
    的情况下,覆盖
    r
    (只读)属性)

  • -Recurse
    需要在整个子树中查找目录(
    Get ChildItem
    ),并在没有确认提示的情况下删除非空目录(
    remove Item


顺便说一句:使用
-Filter
是查找感兴趣目录的最有效方法,因为它在源位置进行筛选,而使用
-Path
将使PowerShell首先枚举所有目录,然后进行筛选。

如果不需要批处理文件答案,为什么要标记它为批处理文件?抱歉,现在已修复如果不需要批处理文件答案,为什么要标记它为批处理文件?抱歉,现在已修复这似乎找不到
。不需要的
目录,除非它已被删除直接位于当前目录下。我正在尝试
获取childitem.Understand-recurse | Remove Item
,现在我在microsoft.powershell.core\filesystem::D:\source\testdir\。Understand有子项,并且未指定recurse参数。如果继续,所有子项都将随该项一起删除。是否确实要继续吗?
。它使用
删除项-force
说明相同。如何在没有用户确认的情况下执行此操作?这不会删除确认。我认为我犯了一个错误,您应该单独使用-force和-Confirm。我已经从示例中删除了-force,还添加了-ErrorAction SilentlyContinue。您可以o在这里找到相同的问题:它现在可以工作,但结果是我的
。不需要的
目录被隐藏,此解决方案只删除了非隐藏的目录。我尝试将
-Force
添加到
Get ChildItem
中,因此它也会返回隐藏的目录,但无法删除它们。当它尝试删除它们时,您会遇到什么错误?您知道吗将需要删除-ErrorAction首选项这似乎找不到
不需要的
目录,除非它位于当前目录的正下方。我正在尝试
获取childitem.Undored-recurse |删除项
,现在我在microsoft.powershell.core\filesystem::D:\source\testdir\不需要有子项且未指定递归参数。如果继续,将删除该项的所有子项。是否确实要继续?
。使用
Remove item-force
,会显示相同的内容。如何在没有用户确认的情况下执行此操作?这不会删除确认我认为我犯了一个错误,您应该只使用-Force和-Confirm分开。我已经从我的示例中删除了-Force,还添加了-ErrorAction SilentlyContinue。你也可以在这里找到同样的问题:它现在可以工作了,但结果是我的
。unwant