Powershell (Get-ADUser -identity).someproperty の結果が表示されない

Powershell (Get-ADUser -identity).someproperty の結果が表示されない

ADユーザーの個々のプロパティを検索しようとしています。

(Get-ADUser $userName).$targetProperty

走っても何も得られない

Get-ADUser $userName | select $targetProperty

プロパティとその下の空白が表示されます。ただし、実行すると。

Get-ADUser $user -Properties * 

完全なリストを取得し、$targetProperty を確認すると、すでに値が存在します。私の環境は 1 つの DC で、ローカルであり、管理者モードになっています。

答え1

取得しようとしているターゲット プロパティによって異なります。デフォルト セット ( を実行したときに取得されるプロパティGet-ADUser testuser) のいずれでもない場合は、結果セットに含まれないため、コマンドの他の場所では取得できません。

デフォルトのプロパティは次のとおりです。

DistinguishedName : CN=Test User,CN=Users,DC=domain,DC=local
Enabled           : True
GivenName         : Test
Name              : Test User
ObjectClass       : user
ObjectGUID        : 94916bd1-008e-409f-a1b3-eaXXXXXX266e
SamAccountName    : TestUser
SID               : S-1-5-21-23XXXXXX88-41XXXXX83-1941XXXX34-32584
Surname           : User
UserPrincipalName : [email protected]

必要なプロパティが だとしますTitle。最初のコマンドは次のようになります。

(Get-ADUser testuser).Title

Titleデフォルトのプロパティ セットに含まれていないため、括弧内の部分にはプロパティが含まれずTitle、結合されたコマンドの結果は何も得られません。

2回目の試み:

Get-ADUser testuser | select Title

これにより、列のヘッダーとして「タイトル」という単語が表示されますが、コマンドの最初の部分にはまだTitle結果にプロパティが含まれていないため、その値はまだありません。

3回目の試み:

Get-ADUser testuser -Properties * 

なるほど! 近づいてきました。Titleプロパティだけでなく、今は気にしていない他の多くのものも含まれています。

4回目の試み:

(Get-ADUser testuser -Properties *).title

これで完了です。この組み合わせにより、ユーザーのすべてのプロパティ ( を含むTitle) が取得され、プロパティのみが表示されますTitle

オプション:次のようにすると、 が提供する100 を超えるプロパティを問い合わせる手間を省き-Properties *、デフォルトのプロパティと のみを取得できるので、処理が少し速くなります。Title

(Get-ADUser testuser -Properties Title).Title

答え2

次のようにすれば情報を取得できることがわかりましたが、他のコマンドでは機能しないのはなぜでしょうか?

(Get-ADUser $user -Properties *).$targetProperty

関連情報