Get-ADUser -LDAPFilter "(&(objectCategory=Person)(objectClass=User)(lockoutTime>=1))" -Properties LockedOut
信頼できる結果が返されないので、必ずしも信頼する必要はありませんが、現時点ではPDCeに直接連絡することもできません。最良の結果を得るには、ドメイン全体のアカウントロックアウトに関する最新の情報が常に含まれているPDCエミュレータを直接ターゲットにすることをお勧めします。
これが、レプリケーションの遅延が発生していることを確認しているところです。
...アカウントロックアウトは、プライマリドメインコントローラー(PDC)エミュレーターの役割の所有者に緊急に複製され、次に以下に緊急に複製されます。
?PDCエミュレータと同じサイトにある同じドメイン内のドメインコントローラ。
?アカウントロックアウトを処理したドメインコントローラと同じサイトにある同じドメイン内のドメインコントローラ。
•PDCエミュレーターを含むサイトまたはアカウントのロックアウトが処理されたサイトとのサイト間の変更通知(したがって、緊急の複製)を許可するように構成されたサイトにある同じドメイン内のドメインコントローラー。これらのサイトには、PDCエミュレーターを含むサイトと同じサイトリンク、またはアカウントロックアウトを処理したドメインコントローラーを含むサイトと同じサイトリンクに含まれているサイトが含まれます。
さらに、PDCエミュレーター以外のドメインコントローラーで認証が失敗した場合、認証はPDCエミュレーターで再試行されます。このため、不正なパスワードを試行するしきい値に達した場合、PDCエミュレータは、失敗したパスワードの試行を処理したドメインコントローラの前にアカウントをロックします。PDCエミュレーターの役割の所有者がパスワードの変更とアカウントのロックアウトを管理する方法の詳細については、このドキュメントの「柔軟な単一マスター操作の管理」を参照してください。
だからSearch-ADAccount -LockedOut -Server DC-PDCE
、あなたの結果がもっと良いかどうか試してみてください。
また、lockoutTime属性の周りにクエリを構築する際に考慮すべき点が他にもあります。
この属性値は、アカウントが正常にログオンしたときにのみリセットされます。つまり、この値はゼロ以外の値である可能性がありますが、アカウントはロックアウトされていません。アカウントがロックアウトされているかどうかを正確に判断するには、この時間にLockout-Durationを追加し、結果を現在の時間と比較して、ローカルタイムゾーンと夏時間を考慮する必要があります。
編集:リバースエンジニアリングの方法でMicrosoft.ActiveDirectory.Management.dll
、Search-ADAccount -LockedOut
かなり信頼できる結果を生成すると思われる次のコードを実行することを伝えることができます。
else if ((bool) this._paramSet.LockedOut)
{
list.Add(ADAccountFactory<ADAccount>.AttributeTable[cmdletSessionInfo.ConnectedADServerType]["AccountLockoutTime"].InvokeToSearcherConverter(ADOPathUtil.CreateFilterClause(ADOperator.Ge, "AccountLockoutTime", (object) 1), cmdletSessionInfo));
this.OutputFilterFunction = new ADGetCmdletBase<SearchADAccountParameterSet, ADAccountFactory<ADAccount>, ADAccount>.OutputFilterDelegate(this.FilterIsLockedOut);
}
if (list.Count > 0)
this.OutputSearchResults(list.Count != 1 ? ADOPathUtil.CreateAndClause(list.ToArray()) : list[0]);
else
this.OutputSearchResults((IADOPathNode) null);
つまりSearch-ADAccount -LockedOut
、AccountLockoutTime属性も調べているようです。
正義のためにさらに編集してください: Richard Mueller、Dir。サービスMVPはこれを言います:
userAccountControl属性を使用して、ロックアウトされているユーザーを識別することはできません。このために記述されたuserAccountControlが少しありますが、使用されていません。
私はこうしてこれを確認することができます:
PS C:\Users\ryan> $(Search-ADAccount -LockedOut).Count
11
PS C:\Users\ryan> $(Get-ADUser -LDAPFilter "(&(objectCategory=User)(userAccountControl:1.2.840.113556.1.4.803:=16))").Count
0
最後に、トピックに関するこのブログ投稿で終わります。これはlockoutTime>=1
、が最適なソリューションに近づいている理由を説明していますが、それは話の一部にすぎません。リストをさらにフィルタリングして、lockoutTimeが過去$(ドメインのロックアウト期間)分を超えているユーザーのみを含める必要があります。