Powershell获得所有权并基于SamaAccountName删除文件夹

Powershell获得所有权并基于SamaAccountName删除文件夹,powershell,Powershell,需要根据samaccountname获取unc路径中的所有权/删除文件夹/文件 Foreach ($line in $users){ Get-Aduser -identity $line.DistinguishedName | Select samaccountname $username = $line.samaccountname takeown /a /r /d y /f "\\fileserver\share\$username" Remove-Ite

需要根据samaccountname获取unc路径中的所有权/删除文件夹/文件

Foreach ($line in $users){
  Get-Aduser -identity $line.DistinguishedName | Select samaccountname
  $username = $line.samaccountname
  takeown /a /r /d y /f "\\fileserver\share\$username"
  Remove-Item "\\fileserver\share\$username"}

以上尝试获取\\fileserver\share中所有内容的所有权,我只需要它获取/删除$username文件夹/子文件夹的所有权。此外,需要能够正确地做一个-whatif,以便在它发生之前看到将发生什么。谢谢大家!

我认为问题的根源在于您的源CSV可能没有
samaccountname
列,因此您的行
$username=$line.samaccountname
正在将
$username
设置为
$null
。要修复此问题,请保存
Get ADUser
调用的结果,然后引用该结果

Foreach ($line in $users){
  $ADUser = Get-Aduser -identity $line.DistinguishedName | Select samaccountname
  $username = $ADUser.samaccountname
  takeown /a /r /d y /f "\\fileserver\share\$username"
  Remove-Item "\\fileserver\share\$username"}
就这样,这是我的答案,其余的只是我觉得适用于这种情况的额外材料,可能会有所帮助

以前,当NTFS所有者丢失或损坏时,我在尝试获取文件和文件夹的所有权时遇到过一些问题(例如帐户被删除,而所有者只剩下一个没有指向任何内容的SID)。下面是我手头上的函数,以防出现这种麻烦的情况(我知道函数上的动词不是一个被认可的动词,但它使我微笑,所以它保持不变!):

你只需给它提供路径,它就会处理好所有的路径。用法示例:

"\\fileserver\share\jim","\\fileserver\share\bob","\\fileserver\share\mark"|PWN-Item


我觉得你跳过了一步。您可以
获取ADUser
,但不存储结果。我想您希望这些结果用于设置
$username
,而不是从
$line.samaccountname
进行设置。所以可能
$ADUser=Get ADUser-iden…
,然后
$username=$ADUser.samaccountname
?@themadtechnician这是有意义的。这是否会阻止它尝试获得\\servername\share而不是\\servername\share\$username的所有权?@SantiagoSquarzon那么使用Set ACL的代码会是什么样子呢?是的,因为
$username
将为空,这使得
“\\fileserver\share\$username”
读作“
”\\fileserver\share\”
@SantiagoSquarzon
获取Acl
设置Acl
如果所有者丢失或帐户损坏,处理文件时可能会遇到问题。我以前在使用
Set Acl
获取所有权时遇到过问题,不得不使用其他方法。因此,如果用户的samAccountName为“WShattner”,您是否正在尝试获取文件/文件夹“fileserver\share\WShattner.v2”的所有权?就是这样!好的,另一个问题是takeown/a/r/d y/f“\\fileserver\share\$username.v2”是否适用于用户名为.v2的文件夹?是的,samaccountname是“WShattner”,试图获得文件/文件夹的所有权“\\fileserver\share\WShattner.v2”是的,这很好。谢谢!这帮了大忙。现在,最后一部分是删除项目“\\servername\share\$username”,再次删除$username.v2。
"\\fileserver\share\jim","\\fileserver\share\bob","\\fileserver\share\mark"|PWN-Item
PWN-Item "\\fileserver\share\$username"