Powershell FromFileTime计算属性中经过的时间

Powershell FromFileTime计算属性中经过的时间,powershell,active-directory,Powershell,Active Directory,我正在尝试修改下面的计算属性,以便它可以正确计算以秒、分钟、小时、天为单位的时间差(如果可能) 下面的脚本正在运行,只是上次登录之前的专栏对我来说仍然没有意义 $username = "Global.Admin" Get-ADDomainController -Filter * | ForEach-Object { $dc = $_ Get-ADUser $username -Properties LastLogon,DisplayName,ProxyAddr

我正在尝试修改下面的计算属性,以便它可以正确计算以秒、分钟、小时、天为单位的时间差(如果可能)

下面的脚本正在运行,只是上次登录之前的专栏对我来说仍然没有意义

$username = "Global.Admin"
Get-ADDomainController -Filter * | ForEach-Object {
    $dc = $_
    Get-ADUser $username -Properties LastLogon,DisplayName,ProxyAddresses -Server $_.Name |
        Select-Object -Property SamAccountName,
            DisplayName,
             @{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。[fffffffff]

“g”通用短格式(文化敏感)
[-]d.hh:mm:ss。[fffffffff]

“G”通用长格式(区分区域性)
[-]d:hh:mm:ss.fffffff

例如,这将输出-00:02:13.8779620

$date1 = Get-Date

$date2 = Get-Date


$timespan = $date1-$date2


$timespan.ToString("c")
因此,在您的情况下,只需将秒数更改为.ToString(“c”)或任何所需的输出格式

例如


timespan上的
Seconds
属性给出了0-59之间的秒数-例如,对于“一分三十秒”,它给出了“30”。如果你想得到“90”,你可以使用
TotalSeconds
来代替。小的修正-
Seconds
可以在-59到+59之间-谢谢,克莱顿。你能告诉我要哪一个吗更新?嗨@dan,谢谢你的帮助,是的,它可以工作。那么我如何删除或截断秒后的最后数字?找到了:
{$((New-TimeSpan -Start ([datetime]::FromFileTime($_.LastLogon)) -End (Get-Date)).ToString("c")) }