
Использование следующих команд не создает члена с именем 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]
Ссылка на источник согласно приведенному выше заключению [1]
Решение естьдля явного указания одного из Constructed
значений свойств атрибута в сочетании с -Properties *
подстановочным знаком, как в приведенном ниже примере PowerShell.
Однако, насколько я могу судить, если вы явно назовете один из них, некоторые другие Constructed
значения свойств атрибутов будут перечисленыно не обязательно все из них.
Это означает, что если ожидаемые атрибуты не выводятся, то добавьте их явно, разделив запятыми перед запятой-звездочкой [ , *
]. (например Get-ADUser -Identity $Env:USERNAME –Properties msDS-UserPasswordExpiryTimeComputed, ModifyTimeStamp, * | Format-List * -Force;
).
PowerShell
Get-ADUser -Identity $Env:USERNAME –Properties msDS-UserPasswordExpiryTimeComputed, * | Format-List * -Force;