从包含多个列的CSV文件中删除多个文件或文件夹(Powershell)

时间:2013-07-25 07:35:17

标签: powershell

我需要一些脚本帮助删除服务器(DC)上的AD禁用用户主文件夹和漫游配置文件文件夹。 我已经完成的步骤,我创建了一个powershell命令:

Import-Module ActiveDirectory
Get-ADUser -SearchBase "OU=Marked for Deletion,OU=Disable Users,DC=******,DC=com" -Filter * -Property * |
Select-Object -Property homeDirectory,profilePath | Export-CSV -Path .\Remove.csv

此命令导出已禁用用户的主文件夹和漫游配置文件文件夹的属性。 现在,' CSV文件包含两个colmuns,一个是" homeDirectory"第二个" profilePath"

example

问题是,当我执行此脚本时,我收到错误。

$folders = Get-Content "C:\lab\remove.csv"

foreach ($homeDirectory in $folders) {
    Remove-Item -Path $homeDirectory -force -Recurse
    }
foreach ($profilePath in $folders) {
    Remove-Item -Path $profilePath -force -Recurse
    }
write-host -foregroundcolor yellow "Delete action complete"

有人可以帮助我,我会很感激。

1 个答案:

答案 0 :(得分:0)

首先,我会从您的CSV中删除类型信息,如下所示:

Import-Module ActiveDirectory
Get-ADUser -SearchBase "OU=Marked for Deletion,OU=Disable Users,DC=******,DC=com" -Filter * -Property * |
Select-Object -Property homeDirectory,profilePath | 
Export-CSV -Path .\Remove.csv -NoTypeInformation

然后,对于你的删除代码,我会用这个:

Import-Csv "C:\lab\remove.csv" | % {
  Remove-Item -Path $_.homeDirectory -force -Recurse
  Remove-Item -Path $_.profilePath -force -Recurse
}

write-host -foregroundcolor yellow "Delete action complete"

您的代码的问题在于您没有循环遍历列,您逐行循环然后再进行两次。要按照您的方式进行操作,您需要将该行分隔为逗号。