Powershell 从GridView输出中删除文件夹

Powershell 从GridView输出中删除文件夹,powershell,gridview,Powershell,Gridview,我一直在使用在此处和其他来源上找到的几个脚本,试图使用PowerShell脚本删除系统上的数千个空文件夹,这些文件夹最终用于日常表单处理。有几种简单有效的方法可以做到这一点,但我需要一种方法来验证和选择文件夹,这样我就不会删除少数即使是空的也不应该删除的文件夹 我正在为$folder使用参数语句,因此我可以在命令行中输入它,或者它将提示输入它。使用这个命令,我得到了gridview,如果我只是简单地回显输出,就可以了。然而,我似乎不知道如何将输出传递给Remove Item或Del-Recurs

我一直在使用在此处和其他来源上找到的几个脚本,试图使用PowerShell脚本删除系统上的数千个空文件夹,这些文件夹最终用于日常表单处理。有几种简单有效的方法可以做到这一点,但我需要一种方法来验证和选择文件夹,这样我就不会删除少数即使是空的也不应该删除的文件夹

我正在为$folder使用参数语句,因此我可以在命令行中输入它,或者它将提示输入它。使用这个命令,我得到了gridview,如果我只是简单地回显输出,就可以了。然而,我似乎不知道如何将输出传递给Remove Item或Del-Recurse。使用Del给了我:

戴尔:找不到驱动器。名为“@{FullName=D”的驱动器不存在

它不是没有得到输出,就是在寻找一个数组

foreach ($folder in (dir $target -Directory -Recurse | 
    where {-not $_.GetFiles("*", "AllDirectories")} |
    Select Fullname | 
    Out-GridView -PassThru -Title "Select Folders For Deletion and Click OK"
)) {
    del $folder -Recurse -WhatIf
}

我怀疑这将实现您想要的。在您已经在使用管道的情况下,这里不需要ForEach循环

Get-ChildItem -LiteralPath $Target -Directory -Recurse -Force |
  Where-Object { !$_.GetFiles('*','AllDirectories') } |
  Select-Object -Property 'FullName' |
  Out-GridView -PassThru -Title 'Select folders for deletion and click OK' |
  ForEach-Object { Remove-Item -LiteralPath $_.FullName -WhatIf }

您试图对该脚本块执行什么操作?您需要通过管道将对象传递到:|删除项-WhatIf edit:nvm。您可能应该在循环之前定义$Folders,这样它看起来就不会那么怪异了。del$folder->del$folder。FullName@AnsgarWiechers-这确实修复了循环的代码,很好的调用!这比使用循环更干净。Thanks!