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与通配符结合的其中一个属性属性值。-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;

支持资源

相关内容