
使用下列命令不會產生名為 的成員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-UserPasswordExpiryTimeComputed
是一個Constructed
屬性類型不是靜態的,而是經過計算/計算來取得值的。
理論是因為它是計算值,所以枚舉每個計算開銷的值需要更多的資源。出於性能原因,預設情況下 Get-ADUser
不會-Properties *
使用所使用的通配符參數來列舉所有計算的屬性。[1]
解決辦法是依照下列範例 PowerShellConstructed
結合通配符明確指定屬性屬性值之一。-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;