use*_*352 7 .net c# powershell
查询上的WMi对象
$colItems = Get-WmiObject Win32_NetworkLoginProfile -Namespace "root\CIMV2"
| Where-Object {$_.name -match "Name"} | Select-Object name,PasswordAge
Run Code Online (Sandbox Code Playgroud)
根据MSDN
PasswordAge
数据类型:datetime
访问类型:只读
密码生效的时间长度.此值是从自上次更改密码以来经过的秒数开始计算的.
示例:00001201000230.000000 000
我正进入(状态
00000068235223.000000:000
Run Code Online (Sandbox Code Playgroud)
所以我尝试过这个TimeSpan,但DateTime没有运气.冒号代表如何获得它所代表的数字小时数.
谢谢将WMI类名添加到标题中,以便下一个被文档措辞搞糊涂的可怜的灵魂.
这是有效的
完美的工作$ str ="00000068235223.000000:000"$ ts = [System.Management.ManagementDateTimeConverter] :: ToTimeSpan($ str)
日:68小时:23分钟:52秒:23毫秒:0蜱:59611430000000总时间:68.9947106481481总时数:1655.87305555556总分:99352.3833333333总分:5961143总百分比:5961143000
这是DMTF时间间隔格式,在此处记录.基本上它是字符串,它编码表单中的时间跨度ddddddddHHMMSS.mmmmmm:000.请注意,对于时间间隔,结尾始终是:000.
来自文档:
以下示例显示了日期时间间隔的格式.ddddddddHHMMSS.mmmmmm:000
下表列出了日期 - 时间间隔的字段.
字段描述
dddddddd表示天数(00000000到99999999)的八位数字.
HH使用24小时制(00至23)的一天中的两位数小时.
MM小时内两位数分钟(00到59).
SS分钟内的两位数秒(00到59).
mmmmmm秒中的六位数微秒(000000到999999).
我认为文档对于这个领域有些误导,因为它暗示整数是完整的秒数,但事实上它是一个表示天,小时,分钟,秒等的字符串格式.
您应该使用[System.Management.ManagementDateTimeConverter]::ToTimeSpan将此字符串转换为.NET Timespan,但是,无论出于何种原因我实际上收到的数组而不是PasswordAge的字符串,所以我不得不使用它:
$p = gwmi Win32_NetworkLoginProfile
[System.Management.ManagementDateTimeConverter]::ToTimeSpan($p.PasswordAge[1])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2976 次 |
| 最近记录: |