如何解决从FromFileTime计算的属性中经过的时间
我正在尝试修改以下计算的属性,以便在可能的情况下正确计算以秒,分钟,小时,天为单位的时间差。
以下脚本正在运行,只是最近登录列对我来说仍然没有意义。
$username = "Global.Admin"
Get-ADDomainController -Filter * | ForEach-Object {
$dc = $_
Get-ADUser $username -Properties LastLogon,DisplayName,ProxyAddresses -Server $_.Name |
Select-Object -Property SamAccountName,@{n="DC"; e={$dc.Name}},@{n="IP"; e={$dc.IPv4Address}},@{n="lastLogon"; e={[datetime]::FromFileTime($_.'lastLogon')}},@{n ="Last logon ago"; e = {$((New-TimeSpan -Start ([datetime]::FromFileTime($_.LastLogon)) -End (Get-Date)).Seconds) }},ProxyAddresses
} | ft -autosize
解决方法
TimeSpan具有内置的格式化功能。
格式说明符名称“ c”恒定格式(不区分区域性。 [-] d.hh:mm:ss。[fffffff]
“ g”通用短格式(对文化敏感)
[-] d.hh:mm:ss。[fffffff]“ G”常规长格式(对文化敏感)
[-] d.:hh:mm:ss.fffffff
例如这将输出-00:02:13.8779620
$date1 = Get-Date
$date2 = Get-Date
$timespan = $date1-$date2
$timespan.ToString("c")
因此,在您的情况下,您只需要将Seconds更改为.ToString(“ c”)或所需的输出格式即可。
例如
{$((New-TimeSpan -Start ([datetime]::FromFileTime($_.LastLogon)) -End (Get-Date)).ToString("c")) }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。