gpt4 book ai didi

powershell - 检查文件夹是否被授予访问权限

转载 作者:行者123 更新时间:2023-12-02 21:49:34 28 4
gpt4 key购买 nike

我是 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
}

我被困在这里,完全不知道如何继续。 :(

最佳答案

这完全取决于“适当权限”的构成,但如果您希望用户对其文件夹授予 FullControl 权限,则可以执行以下操作:

检索每个文件夹的 ACL:

$FolderAcl = Get-Acl $path

构造一个代表相应文件夹的NTAccount对象

$Account   = New-Object System.Security.Principal.NTAccount "DOMAIN\user"

然后从 ACL 中获取所有显式访问规则条目,向相关帐户授予完全控制权:

$FullControl = $FolderAcl.GetAccessRules($true,$false,[System.Security.Principal.NTAccount]) | Where-Object {
$_.FileSystemRights -eq "FullControl" -and
$_.AccessControlType -eq "Allow" -and
$_.IdentityReference -eq $Account
}

如果$FullControl包含$null(即未找到访问规则)打印到文件。

if(-not $FullControl){
$path |Out-File C:\wrongPermissions.txt
}
<小时/>

如果您想查找具有 Modify 权限的 ACE,包括 Modify 包含在其他权限中的 ACE(例如 FullControl),您可以对 Modify 的值执行按位 AND 运算,如下所示:

$ModifyValue = [System.Security.AccessControl.FileSystemRights]::Modify -as [int]
$ACEswithModify = $FolderAcl.Access |?{ ($_.FileSystemRights -band $ModifyValue) -eq $ModifyValue }

关于powershell - 检查文件夹是否被授予访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34178890/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com