Bal*_* RR 4 directory powershell subdirectory
我是 PS 脚本新手。刚刚开始编写一个脚本来查找用户是否正确授予文件夹权限。文件夹名称和AD帐户名称相同。假设如果文件夹名称是 XX11223,那么用户 XX11223 应该有权访问该特定文件夹。未正确许可的文件夹应打印到文件中。请有人帮忙解决这个问题。
$Paths = Get-Content "Path.txt"
#To get the subfolders for which the permissions has to be checked
$Folder = foreach ($Path in $Paths) {
$Path = $Path | Select-Object -Unique
Write-Host $Path -ForegroundColor Green
Get-ChildItem $Path | Where-Object { $_.Attributes -eq 'Directory' } | Select-Object FullName
}
#To get the ACLs for the list of folders from above
$ACLS = Get-Content $Folder
$Out = foreach ($ACL in $ACLS) {
Write-Host $ACL -ForegroundColor Cyan
Get-Acl $ACL | Select-Object AccesstoString
}
Run Code Online (Sandbox Code Playgroud)
我被困在这里,完全不知道如何继续。:(
这一切都取决于什么构成“适当的权限”,但如果您希望用户授予FullControl其文件夹权限,您可以执行以下操作:
检索每个文件夹的 ACL:
$FolderAcl = Get-Acl $path
Run Code Online (Sandbox Code Playgroud)
构造一个NTAccount代表对应文件夹的对象
$Account = New-Object System.Security.Principal.NTAccount "DOMAIN\user"
Run Code Online (Sandbox Code Playgroud)
然后从 ACL 中获取所有显式访问规则条目,授予相关帐户完全控制权:
$FullControl = $FolderAcl.GetAccessRules($true,$false,[System.Security.Principal.NTAccount]) | Where-Object {
$_.FileSystemRights -eq "FullControl" -and
$_.AccessControlType -eq "Allow" -and
$_.IdentityReference -eq $Account
}
Run Code Online (Sandbox Code Playgroud)
如果$FullControl包含$null(即未找到访问规则),则打印到文件。
if(-not $FullControl){
$path |Out-File C:\wrongPermissions.txt
}
Run Code Online (Sandbox Code Playgroud)
如果您想查找具有权限的 ACE Modify,包括Modify包含在其他权限中的 ACE(例如FullControl),您可以对 的值执行按位 AND 运算Modify,如下所示:
$ModifyValue = [System.Security.AccessControl.FileSystemRights]::Modify -as [int]
$ACEswithModify = $FolderAcl.Access |?{ ($_.FileSystemRights -band $ModifyValue) -eq $ModifyValue }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4450 次 |
| 最近记录: |