用于从列表中删除文件夹的Powershell脚本

时间:2012-02-15 21:49:11

标签: powershell directory

为了回到这个问题,PowerShell script to delete files from list and output list of deleted file,我正在尝试完成类似的事情。我有一个用户名列表,与我们的网络文件服务器上的某些文件夹的名称相匹配。并非列表中的所有用户名都将创建主文件夹,有些可能根本不存在。

我的伪代码看起来像这样:

  • 加载用户列表
  • 为每个用户检查他们是否有目录
  • 如果他们有一个目录,强制并递归删除它

以下是我一直未能成功使用的代码:

$Termed_Users = "C:\Data\Termed_Users.csv" 
$Home_Folders = "X:"

$UserList = Import-Csv $Termed_Users

$UserList | ForEach-Object {    
   $ID = $_.ID  
   $User_Home = $Home_Folders + "\" + $_.ID }

If ( Test-Path $User_Home ) { Remove-Item -Recurse -Force $User_Home }

1 个答案:

答案 0 :(得分:3)

问题出在您的ForEach-Object管道中。

您不断重新分配$User_Home变量,并在尝试任何删除之前循环遍历整个列表。将删除内容移动到该脚本块中:

$UserList | ForEach-Object {    
   $ID = $_.ID  
   $User_Home = $Home_Folders + "\" + $_.ID
   Remove-Item -recurse -force $User_Home -erroraction silentlycontinue }

我也删除了测试,因为它无关紧要 - 您将尝试删除它们并忽略错误。