PowerShell Remove-Item -Force 不会删除从 CSV 文件导入的非拥有目录

问题描述

我对此很陌生,希望得到任何建议。 我使用的是 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 }
}