msDS-UserPasswordExpiryTimeComputed は「隠し」メンバーですか?

msDS-UserPasswordExpiryTimeComputed は「隠し」メンバーですか?

次のコマンドを使用しても、 という名前のメンバーは生成されませんmsDS-UserPasswordExpiryTimeComputed。これは、ある種の「隠し」メンバーですか? オブジェクトの他の「隠し」メンバーはありますか?

Get-ADUser -identity $Env:USERNAME –Properties *
Get-ADUser -identity $Env:USERNAME –Properties * | Format-List -Property * -Force

ただし、 の値はmsDS-UserPasswordExpiryTimeComputed次のコマンドによって生成されます。

Get-ADUser -Identity $Env:USERNAME –Properties "msDS-UserPasswordExpiryTimeComputed"

ユーザー アカウントのパスワードの有効期限を計算するために使用できます。

Get-ADUser -Identity $Env:USERNAME –Properties "DisplayName", "msDS-UserPasswordExpiryTimeComputed" |
Select-Object -Property "Displayname",@{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}

これは、PowerShell Core と Windows PowerShell の両方で発生します。

PS C:\> $PSVersionTable.PSVersion.ToString()
7.2.6
PS C:\> $PSVersionTable.PSVersion.ToString()
5.1.19041.1682

答え1

のようだmsDS-UserPasswordExpiryTimeComputedConstructed属性静的ではなく、値を取得するために計算される型。

その理論は計算値なので、計算オーバーヘッドごとに値を列挙するとリソースを大量に消費します。パフォーマンス上の理由から、デフォルトで Get-ADUser-Properties *使用されたワイルドカード パラメータを使用して、計算されたすべての属性を列挙しません。[1]

上記の結論に関する出典参照[1]

解決策は以下の PowerShell の例のように、ワイルドカードConstructedと組み合わせて属性プロパティ値の 1 つを明示的に指定します。-Properties *

しかし、私が知る限り、これらのいずれかを明示的に指定すると、他のConstructed属性プロパティ値のいくつかが列挙されます。しかし必ずしも全てではない

つまり、期待される属性が出力されない場合は、それらをカンマ アスタリスク [ , *] の前にカンマ区切りで明示的に追加します (例Get-ADUser -Identity $Env:USERNAME –Properties msDS-UserPasswordExpiryTimeComputed, ModifyTimeStamp, * | Format-List * -Force;)。

パワーシェル

Get-ADUser -Identity $Env:USERNAME –Properties msDS-UserPasswordExpiryTimeComputed, * | Format-List * -Force;

サポートリソース

関連情報