我已经使用LDP在一些AD-LDS对象上手动设置了一些自定义DACL。我正在尝试编写一个脚本,以SDDL形式导出这些ACL (目前只有DACL )。
我可以使用以下代码检索AD-LDS对象:
$obj = Get-ADOrganizationalUnit -Filter {Name -Like 'stuff'} -searchbase "OU=apps,DC=example,DC=com" -server 'localhost:389'
$obj[0].distinguishedName
OU=stuff,OU=apps,DC=example,DC=com我知道get-acl Powershell command及其Active Directory aware syntax,但是当我在我的AD-LDS对象上尝试它时,它失败了,如下所示
Get-Acl : Cannot find path 'OU=stuff,OU=apps,DC=example,DC=com' because
it does not exist.
At line:1 char:9
+ (Get-Acl <<<< "DC=example,DC=com").access
+ CategoryInfo : ObjectNotFound: (:) [Get-Acl], ItemNotFoundException
+ FullyQualifiedErrorId : GetAcl_PathNotFound_Exception,Microsoft.PowerShell.Commands.GetAclCommand我尝试使用AD:前缀和ldap://localhost/作为get-acl命令的前缀,但错误仍然存在。我也无法检索其他类型的对象(如user和group)的DACL。
如何使用Powershell检索SDDL形式的AD-LDS对象的DACL?
发布于 2016-01-23 04:25:39
我也有同样的问题,但没有在网上找到合适的答案。我花了相当长的时间才想出一个可行的解决方案。由于这个讨论是常见搜索引擎的顶级结果之一,但并没有提供实际的答案,所以我决定将其发布在这里:
下面的问题将我推向了正确的方向:How do I set-location ad: to a different active directory domain with Powershell
我在Windows 2012R2 (我认为是Powershell 4.0)上测试了它。
假设您有一个运行在"server:port“上、后缀为"dc=root,dc=com”的ACLs实例,下面的代码将使用‘get-acl’屏幕打印此后缀节点的acl:
导入-模块活动目录
New-PSDrive -Name myLDS -PSProvider ActiveDirectory -Server“服务器:端口”-Scope全局-Root“//根New/”
(Get-ACL 'myLDS:\dc=root,dc=com').access
请注意,'get-acl‘和dsacls.exe的输出有所不同。‘’get acl‘将返回主题的原始SID,而dsacls在内部将SID转换为DNs并返回DNs。因此,如果您使用'get-acl',但需要DNs,则需要使用额外的LDAP查询自己执行此转换。
发布于 2015-04-17 01:18:21
尝试:
dsacls 'OU=stuff,OU=apps,DC=example,DC=com‘
我在PowerShell上看到了一些有趣的事情,并怀疑它与权限有关。也就是说,尝试一下:
Get-ADOrganizationalUnit -Filter‘-eq "stuff"’
这可能会起作用,使用Get-ADOrganizationalUnit上的方法和属性可以帮助隔离问题
当我找到问题的根本原因时,我会更新这篇文章。
https://stackoverflow.com/questions/13463155
复制相似问题