Запрос объекта WMi на
$colItems = Get-WmiObject Win32_NetworkLoginProfile -Namespace "root\CIMV2"
| Where-Object {$_.name -match "Name"} | Select-Object name,PasswordAge
согласно MSDN
PasswordAge
Тип данных: datetime
Тип доступа: Только чтение
Длительность действия пароля. Это значение измеряется количеством секунд, прошедшим с момента последней смены пароля.
Пример: 00001201000230.000000 000
я осознаю
00000068235223.000000:000
Итак, я попытался применить это к TimeSpan
и DateTime
безуспешно. что представляет двоеточие, как получить число часов, которое оно представляет.
Спасибо. Добавление имени класса WMI в заголовок для следующего бедняги, которого смущает формулировка документации.
вот что работает
Это сработало отлично $str = 00000068235223.000000:000 $ts = [System.Management.ManagementDateTimeConverter]::ToTimeSpan($str)
Дни: 68 часов: 23 минуты: 52 секунды: 23 Миллисекунды: 0 клещей: 59611430000000 Всего в общей времени: 68.9947106481481 Totalhours: 1655.87305555556 TotalMinutes: 99352.3833333333 Totalseconds: 5961143 Totalmilliseconds: 5961143000
PasswordAge
— это"ddddddddHHmmss.ffffff:000"
, то есть 8 цифр дней, затем 2 цифры часов, затем минуты, затем секунды, затем дроби. Они говорят использовать[TimeSpan]::ParseExact($string,"ddddddddHHmmss.ffffff:000",$null)
, но я не могу заставить его работать на моей PS4/Win7. Очень странно. - person Vesper   schedule 07.07.2015