Powershell. Получить с удаленных ПК Uptime и LastLogon

К сожалению для 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

Добавить комментарий

Ваш адрес email не будет опубликован.