windows - 更改所有权递归文件夹powershell
问题描述
我希望将数千个文件和文件夹的所有权从一个特定用户更改为另一个用户。
在文件夹结构中,大多数文件和文件夹的所有权都需要从 UserA 更改为 UserB,但有一些属于 UserC 的文件我们需要保持不变。
我发现了一个以前的问题,它似乎与这个问题相同,但我再也找不到它来参考了。它确实给出了以下内容。
$FolderToScan = "G:\Folder\Folder\Folder"
$OldOwner = "Domain\User"
$NewOwner = New-Object System.Security.Principal.NTAccount("Domain","User")
$files = Get-ChildItem -LiteralPath $FolderToScan -Recurse
Foreach ($file in $files)
{
$f = Get-Item -LiteralPath $file.FullName
$f = $f.GetAccessControl('Access')
If ($f.Owner -eq $OldOwner) {
$f.SetOwner($NewOwner)
Set-Acl -path $file.FullName -aclObject $f
}
}
当我使用正确的详细信息代替域/用户运行上述内容时,什么也没有发生。
如果有人能指出我正确的方向,那就太好了
解决方案
当我尝试代码时,它总是为所有者字段返回任何内容。在 foreach 循环中尝试这些更改。
这对我有用
Foreach ($file in $files)
{
Get-Item -LiteralPath $file.fullname
$f = Get-Item -LiteralPath $file.FullName
$acl = (get-acl $f)
$acl.owner
If ($acl.Owner -eq $OldOwner) {
$acl.SetOwner($NewOwner)
Set-Acl -path $file.FullName -aclObject $acl
}
}
推荐阅读
- layout - 如何修复此两列幻灯片(代码+图像)的显示 md 渲染?
- java - 每当在java中调用特定类的函数时如何运行一些代码
- javascript - 如何安全地隐藏 HTML 中的元素?
- matlab - 查找matlab函数参数类型的最快方法?
- javascript - 在 javascript 中对对象数组进行排序
- apache-spark-sql - 列出 delta-lake 中的视图
- javascript - 如何测试您无法直接访问的功能
- machine-learning - sklearn.model_selection.StratifiedKFold 中的 shuffle 参数?
- amazon-web-services - terraform aws_lb 被污染并且资源正在重新创建
- javascript - JavaScript:如何过滤嵌套对象数组?