2016-07-14 8 views
0

PowershellでADUsersを見ている間に奇妙なものが見つかりました。PowershellのADUsersでプロパティが正しく表示されない

私は次のように入力した場合:

PS> Get-ADUser Xuser -Properties PasswordLastSet, LastLogonDate 

私はこのような出力になるだろう:

DistinguishedName : CN=Xuser,OU=Domain Users,DC=LocalDC,DC=local 
Enabled   : True 
GivenName   : 
LastLogonDate  : 7/14/2016 8:24:03 AM 
Name    : Xuser 
ObjectClass  : user 
PasswordLastSet : 7/1/2016 11:48:37 AM 
SamAccountName : Xuser 
Surname   : 
UserPrincipalName : 

をあなたが見ることができるように、私はPasswordLastSetとLastLogonDateのタイムスタンプを持っています。

私はこの次のように入力している場合しかし、:

PS> $user = Get-ADUser Xuser 
PS> $user.LastLogonDate -eq $null 
PS> True 
PS> $user.PasswordLastSet -eq $null 
PS> True 

何も台無しにしなかったことを確認するために、私は、型付き:何らかの理由で

PS> $user 

DistinguishedName : CN=Xuser,OU=Domain Users,DC=LocalDC,DC=local 
Enabled   : True 
GivenName   : 
LastLogonDate  : 
Name    : Xuser 
ObjectClass  : user 
PasswordLastSet : 
SamAccountName : Xuser 
Surname   : 
UserPrincipalName : 

を、その情報は、$ヌルを示しています。 - あなたは-Propertiesスイッチとパラメータとしてその特定の情報を要求する必要が

PS> $user = Get-ADUser Xuser 

それはデフォルトでPasswordLastSetとLastLogonDateを収集していない:私は気づい

ことの一つは、私が入力したときということです。

私が入力した場合:

PS> $user.LastLogonDate 
PS> $user 

を今はLastLogonDateフィールドを持っていますが、それは、$ nullです。 $user用の出力に

PS> $user.PasswordLastSet 
PS> $user 

PasswordLastSetとLastLogonDateショーの両方を私は値が$ nullであるかどうかを確認するための条件を実行している場合、それはTrueを返します。私が入力した場合と同じになります

醜い行動の種類で、私はそれがなぜそれを行うのか不思議でした。私の最高の推測では、$ userにはGet-ADUserコマンドレットの既定の情報のみが入力されており、非常に単純なWYSIWYGです。これらの特定のフィールドを取得するには、それらを暗黙的に要求する必要があります。

は私が(初期Get-ADUserコマンドレットに要求されない限り)特定のフィールドは、デフォルトでは非表示になったかどうかを確認したかったので、私は入力された:

PS> $user.random 
PS> $user 

そして案の定を、random :はそこにフィールドました。

私も限りこれを行うためのように行くことができます:それはこのように動作理由を誰でも簡単に説明することができます:私は$user

質問を入力すると

PS> $user.random = "Property" 

それはrandom : {Property}を示して?

+0

[エイリアスパラメータ名を使用していないPowerShellの関数ValueFromPipelineByPropertyName](http://stackoverflow.comの可能性のある重複/ question/29928911/powershell-function-valuefrompipelinebypropertyname-not-using-alias-parameter-na) – briantist

+0

これはADコマンドレットの特質であり、リンクされた複製ではうまく説明されています。基本的には、例外をスローするのではなく、存在するかのように振る舞います( '$ null'値)。 – briantist

+0

@briantistに加えて、 'PasswordLastSet'と' LastLogonDate'は 'ADUser'オブジェクトに設定されているデフォルト属性の一部ではないので、あなたが見つけたように明示的に' -Properties'を要求しなければなりません –

答えて

0

あなたは変数だけではなく、現在の試行であることの内容を持っているかどうかをテストしようとしている場合:

$user.LastLogonDate.Length -gt 0 
関連する問題