我们有一个多年来管理不善的共享驱动器。完全控制权被授予没有理由拥有完全权限的用户。自然,他们删除了管理员,因为“他们不需要看到我的东西”。
为了收回对我网络上所有内容的控制权,我尝试创建一个 Powershell 脚本来做两件事:
- 重新获得每个文件夹和文件的所有权
- 添加我的默认管理员组并赋予它完全控制权
第 1 步就像一个魅力,但第 2 步只能让我走到一半。我的脚本成功添加了 Admin 组,但它没有授予任何权限。
请原谅脚本是多么粗糙,它有点像弗兰肯斯坦的怪物,因为我复制粘贴了我在网上找到的几个不同的脚本来达到这一点。
function Recurse-Folder($folderPath, $identity){
Get-ChildItem $folderPath -Recurse |
Foreach-Object {
Take-Ownership $_.FullName $identity
}
}
function Take-Ownership($object, $identity) {
# Give ownership of object to default admin group
takeown.exe /A /F $object
# Create new ACL
$acl = Get-Acl -Path $object
# Set properties
# $identity = "BUILTIN\Administrators"
$fileSystemRights= "FullControl"
$inheritanceFlags = "None"
$propagationFlags = "None"
$type = "Allow"
# Create new rule
$ruleArgs = $identity, $fileSystemRights, $inheritanceFlags, $propagationFlags, $type
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($ruleArgs)
# Apply new rule
$acl.SetAccessRule($rule)
(Get-Item $object).SetAccessControl($acl)
}
$Path = '\\ShareServer1\Share\'
$identity = 'BUILTIN\Administrators'
# $identity = 'NetAdmin'
Take-OwnerShip $Path $identity
Recurse-Folder $Path $identity
Write-Host
Write-Host Done...
Read-Host