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")) }