web-dev-qa-db-ja.com

Powershell get-aduserがすべての結果を表示しない

ADから一部のデータを取得しようとしていますが、混乱する結果が得られます。私は走っています:

Get-ADUser -Filter * -Properties * | select userPrincipalName, msTSLSProperty01

すべてのユーザーが表示されますが、そのうち6人はmsTSLSProperty01フィールドに何かを持っています。混乱するのは、そのフィールドに何かを持つ42人のユーザーを返す必要があることです。そのフィールドにデータがあるユーザーに対して空白が表示される理由は何ですか?

編集1:さらに、私が実行すると:

Get-ADUser username -Properties msTSLSProperty01 | select msTSLSProperty01

空のセットを返します。

2
Fortius

環境内に複数のDCがある場合、予期した変更がそれらのユーザー属性に最近書き込まれたばかりの場合、レプリケーションの遅延が発生するだけです。 Powershellは、これらの属性の存在を確認するために使用している他のツールとは異なるDCをクエリしている可能性があります。PowerShellに特定のDCとともに -Server引数Get-ADUserコマンド。

または、権限の問題があり、一部のユーザーの属性を読み取れない場合があります。

2
Ryan Bolger

@RyanBolgerの answer の補遺として、このPowerShellスクリプトは、各DCを照会します(または、ADWSサービスがインストールされていない場合はエラーを報告します)。これらのユーザーが欠落しているサーバーを特定する、または少なくとも欠落していないサーバーを確認する(つまり、可能な候補をADWSのないサーバー/ PSでクエリしたときにエラーになるサーバーに制限する)には十分かもしれません。

clear-Host
Get-AdDomainController -Filter * | %{
    $count = 0
    $myError = ''
    try {
        $count = (Get-AdUser -Filter * -server $_.Name).Count
    } catch {
        $myError = $_.ToString()
    }
    (New-Object -TypeName PSObject -Property @{
        Name = $_.Name
        Site = $_.Site
        OS = $_.OperatingSystem 
        Count = $count
        Error = $myError
     })
} | select Name, Count, Site, OS, Error | sort Count, Error, Name | format-table -autosize
0
JohnLBevan