1

LDP を使用して、一部の AD-LDS オブジェクトにカスタム DACL を手動で設定しました。これらの ACL (現在は DACL のみ) を SDDL 形式でエクスポートするスクリプトを作成しようとしています。

次のコードで 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 コマンドとそのActive Directory 対応構文は認識していますが、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

get-acl コマンドにプレフィックスと をプレフィックスとして付けようとしましたAD:ldap://localhost/、エラーは同じままです。user他のタイプのオブジェクト (や など)の DACL の取得にも失敗しましたgroup

Powershell を使用して AD-LDS オブジェクトの DACL を SDDL 形式で取得するにはどうすればよいですか?

4

2 に答える 2

1

インターネットで適切な答えを見つけることなく、同じ質問をしました。実用的な解決策を見つけるのにかなりの時間がかかりました。この議論は、通常の検索エンジンの上位の結果の 1 つとして出てきますが、実際の回答を提供していないため、ここに投稿することにしました。

次の質問は、私を正しい方向に導きました: How do I set-location ad: to another Active Directory domain with Powershell

Windows 2012R2(Powershell 4.0があると思います)でテストしました

サフィックス「dc=root,dc=com」を持つ「server:port」で実行されている AD LDS インスタンスがあると仮定すると、次のコードは、「get-acl」を使用してこのサフィックス ノードの ACL をスクリーン印刷します。

  1. Active Directory モジュールを追加します。

インポート モジュールのアクティブ ディレクトリ

  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 を返しますが、dsacl は内部で SID を DN に変換して DN を返します。したがって、「get-acl」を使用するが DN が必要な場合は、追加の LDAP クエリを使用してこの変換を自分で行う必要があります。

于 2016-01-22T20:25:39.483 に答える
0

試す:

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

PowerShell で興味深いことがいくつか見られますが、それはアクセス許可に関連していると思われます。そうは言っても、試してください:

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

これは機能する可能性があり、Get-ADOrganizationalUnit のメソッドと属性をいじってみると、問題の切り分けに役立つ可能性があります

問題の根本原因を見つけたら、この投稿を更新します。

于 2015-04-16T17:18:20.517 に答える