【问题标题】:Retrieve an AD-LDS object ACL with Powershell get-acl使用 Powershell get-acl 检索 AD-LDS 对象 ACL
【发布时间】:2012-11-19 22:09:17
【问题描述】:

我已经使用 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 命令的前缀,但错误保持不变。我也未能检索到其他类型对象的 DACL(如 usergroup)。

如何使用 Powershell 以 SDDL 形式检索 AD-LDS 对象的 DACL?

【问题讨论】:

标签: windows-server-2008 powershell-2.0 acl adlds


【解决方案1】:

我有同样的问题,但在互联网上没有找到正确的答案。我花了很长时间才找到一个可行的解决方案。由于此讨论是通常搜索引擎上的最佳结果之一,但并未提供实际答案,因此我决定将其发布在这里:

以下问题将我推向了正确的方向: 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”的 AD LDS 实例,以下代码将使用“get-acl”屏幕打印此后缀节点的 ACL:

  1. 添加活动目录模块:

导入模块活动目录

  1. 您需要定义一个类似于“AD:”的新访问标识符。此标识符绑定到您当前的 Powershell 会话: (本示例使用“myLDS:”,但您可以定义任何您想要的标识符字符串)

New-PSDrive -Name myLDS -PSProvider ActiveDirectory -Server "server:port" -Scope Global -Root "//RootDSE/"

  1. 最后您可以使用这个新标识符来访问 LDS 存储的 acl 和例如在屏幕上打印:

(Get-ACL 'myLDS:\dc=root,dc=com').access

请注意,'get-acl' 和 dsacls.exe 的输出不同。 'get-acl' 将返回主题的原始 SID,而 dsacls 在内部将 SID 转换为 DN 并返回 DN。因此,如果您使用“get-acl”,但需要 DN,则需要使用额外的 LDAP 查询自己进行此转换。

【讨论】:

    【解决方案2】:

    试试:

    dsacls 'OU=stuff,OU=apps,DC=example,DC=com'

    我在 PowerShell 中看到了一些有趣的东西,并怀疑它与权限相关。也就是说,尝试:

    Get-ADOrganizationalUnit -Filter 'name -eq "stuff"'

    这可能有效,使用 Get-ADOrganizationalUnit 上的方法和属性可能有助于隔离问题

    当我找到问题的根本原因时,我会更新这篇文章。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 2015-10-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多