问题描述
我对此很陌生,希望得到任何建议。 我使用的是 PowerShell 5.1 版,并且可以使用以下代码:
$dir = 导入-Csv DirectoryList.csv $dir | ForEach-Object {$_."目录" | Remove-Item -Force -Recurse}
删除“DirectoryList.csv”中指定的目录列表;但是,它不会删除我不是其所有者的文件夹。是的,我是盒子的管理员,我知道这不会转化为所有者 ;)
我确定有一种方法可以确保对于 CSV 文件中列出的每个目录,如果特定 AD 管理员组(例如:ArchiveAdministrators)不是所有者,则将其更改为所有者,然后删除文件夹及其所有内容,但我不知道该怎么做。
我尝试将脚本修改为:
$dir = 导入-Csv DirectoryList.csv $dir | ForEach-Object {$_."目录" | Set-NTFSOwner -account ArchiveAdministrators\tfl | Remove-Item -Force -Recurse}
现在当它运行时,它什么也不做,我得到这个错误:
+ CategoryInfo : SecurityError: (:) [],ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnauthorizedAccess
感谢任何帮助。
解决方法
Set-NTFSOwner
不输出 directory 信息对象,因此您不能将其输出直接通过管道传输到 Remove-Item
;使用两个不同的语句:
Import-Csv DirectoryList.csv $dir | ForEach-Object {
$_.Directory | Set-NTFSOwner -account ArchiveAdministrators\tfl
if ($?) { $_ | Remove-Item -Force -Recurse }
}