为了回到这个问题,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 }
答案 0 :(得分:3)
问题出在您的ForEach-Object
管道中。
您不断重新分配$User_Home
变量,并在尝试任何删除之前循环遍历整个列表。将删除内容移动到该脚本块中:
$UserList | ForEach-Object {
$ID = $_.ID
$User_Home = $Home_Folders + "\" + $_.ID
Remove-Item -recurse -force $User_Home -erroraction silentlycontinue }
我也删除了测试,因为它无关紧要 - 您将尝试删除它们并忽略错误。