PowerShell を使用して Active Directory ドメイン OU 監査ルールを取得および追加する

PowerShell を使用して Active Directory ドメイン OU 監査ルールを取得および追加する

以下に説明するように、GUI を介して操作するのではなく、PowerShell を使用して Active Directory オブジェクトに対する監査ルールの表示と編集をスクリプト化したいと思います。Active Directory ユーザーとコンピューターから、[表示] メニューの [高度な機能] を有効にし、左側のペインで [ドメイン コントローラー OU] を選択します。[ドメイン コントローラー OU] オブジェクトを右クリックし、[プロパティ] を選択します。[セキュリティ] タブを選択します。[詳細設定] ボタンを選択し、[監査] タブを選択します。

これまでのところ、次のようになっています。まず、OU の識別名を取得します。

import activedirectory
set-location ad:
dir

上記の dir 出力からの正しい distinctiveName を Get-Acl に入力します。

$acl = Get-Acl -Path "DC=something,DC=somethingElse"

$acl オブジェクトの GetSecurityDescriptorSddlForm メソッドは関連しているように見えますが、人間が判読できる出力は得られません。次に試したのは次のことです。

$domain = Get-AdDomain -Server "serverName"
$domainSID = $domain.DomainSID
$acl.GetAuditRules(1,1,$domainSID)

しかし、次のエラーが発生します: GetAuditRules の値 "..." を持つ引数 targetType を型 "System.Type" に変換できません: 型 System.Security.Principal.SecurityIdentifier の "..." 値を型 "System.Type" に変換できません

GetAuditRules のドキュメントには、3 番目のパラメータとして SecurityIdentifier を受け入れると記載されているようですが、これが GetAuditRules メソッドに渡したものだと思いました。 https://docs.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.commonobjectsecurity.getauditrules?view=dotnet-plat-ext-3.1

また、ここの投稿は関連しているようですが、ActiveDirectoryAuditRuleを作成するための正しいコンストラクタメソッドを選択する方法と、GUIDなどの必要なパラメータを収集する方法がわかりません。 https://social.technet.microsoft.com/Forums/en-US/70881826-6189-48c0-8ee7-0d79aa18f085/powershell-to-set-audit-flags-on-ou?forum=ITCG

どのような助けでも大歓迎です。ありがとうございます!

答え1

これはレジストリ用ですが、非常に似ているようです。get-acl で "-audit" スイッチを試してください。

https://stackoverflow.com/questions/13509667/how-to-get-audit-rule-in-acl-object-with-getauditrules-on-registry-key-in-powe

$acl = get-acl -path $pathtoOU -Audit

$acl.getauditrules($true,$true, [System.Security.Principal.NTAccount] )

関連情報