我有一个.bat文件,它运行各种cmd命令,并运行以下命令
powershell -c "Get-Acl -Path HKLM:\SOFTWARE\ESRI\License10.0 | Format-List"
该命令的输出是
Path : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\ESRI\License10.0
Owner : BUILTIN\Administrators
Group : CORPOFLONDON\Domain Users
Access : CREATOR OWNER Allow FullControl
NT AUTHORITY\SYSTEM Allow FullControl
BUILTIN\Administrators Allow FullControl
BUILTIN\Users Allow FullControl
Audit :
Sddl : O:BAG:DUD:PAI(A;CIIO;KA;;;CO)(A;CI;KA;;;SY)(A;CI;KA;;;BA)(A;CI;KA;;;BU)
我想循环访问Access值以查找特定用户和权限级别。
这样做的最佳方式是什么?
答案 0 :(得分:1)
目前还不清楚你要做什么。 在powershell中,您可以使用类似这样的内容来搜索管理员完全控制:
Get-Acl XXX |select -expand access |?{$_.identityreference -match "admin" -and $_.fileSystemRights -eq "FullControl"}
答案 1 :(得分:0)
恕我直言,你应该直接使用PowerShell而不是与cmd混合。
以下是一个例子:
$keyPath = "HKLM:\SOFTWARE\ESRI\License10.0"
$target = "SYSTEM"
"ACL check on $keyPath :"
Get-Acl -Path $keyPath |
Select-Object -ExpandProperty Access |
ForEach-Object {
if($_.IdentityReference -match $target) {
"$($_.IdentityReference) : $($_.AccessControlType) $($_.RegistryRights)"
}
}