К сожалению для Windows нет стандартного командлета консоли Uptime. Но есть множество способов получить это значение которое, без дополнительной обработки, нельзя назвать удобным для использования. Давайте разберем пример получения этого значения, а вместе с ним и LastLogon, с помощью Powershell
Если вы хотите получить отчет с удаленных компьютеров, в котором будут содержаться время последнего включения ПК, количество дней со включения и время последнего логона юзера, используйте следующий скрипт:
$comps = Get-ADcomputer -f *
$result = New-Object 'System.Collections.Generic.List[object]'
foreach($comp in $comps.SamAccountName){
if( Test-Connection $comp -Count 1 ){
$LastRebootTime = Get-WmiObject win32_operatingsystem -ComputerName $comp |
Select @{Name='Computername';Expression={$comp}}, @{Name='LastBootUpTime';Expression={$_.ConverttoDateTime($_.lastbootuptime)}}
$UptimeInDays = ( (Get-Date).Date - $LastRebootTime.LastBootUpTime.Date ).TotalDays
$LastUserLogon = ( Get-ADComputer $comp -Properties lastlogontimestamp | Select @{Name="Lastlogon"; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} ).Lastlogon
$result.add( $([pscustomobject]$Lastreboottime | select *, @{Name='LastUserLogon';Expression={$LastUserLogon}},@{Name='UptimeInDays';Expression={$UptimeInDays}}) )
}
}
$result | Sort -Descending UptimeInDays
В результате мы получим отчет следующего вида:
В Powershell 6 версии появился встроенный командлет Get-Uptime
