使用以下命令不会生成名为 的成员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]
解决方案是按照以下示例 PowerShell,明确指定Constructed
与通配符结合的其中一个属性属性值。-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;