Se você estiver usando o WMI, poderá usar LastBootUpTime
um pouco mais limpo:
PS C:\> $wmi = Get-WmiObject -Class Win32_OperatingSystem
PS C:\> $rebootTime = $wmi.ConvertToDateTime($wmi.LastBootUpTime)
PS C:\> $rebootTime
Tuesday, May 24, 2011 3:18:28 PM
Fazendo isso, pesquisamos o log de eventos Security
, desde $rebootTime
, para o mais recente, com êxito , eventID 4624
contendo Logon Type 2
- Logon interativo:
PS C:\> $entry = Get-EventLog -After $rebootTime -LogName Security | Where-Object {($_.EventID -eq '4624') -and ($_.EntryType -eq 'SuccessAudit') -and ($_.Message | Select-String "Logon Type:\t\t\t2")} | Select-Object -First 1
PS C:\> $lastLogon = $entry.TimeGenerated
PS C:\> $lastLogon
Tuesday, May 24, 2011 3:19:34 PM
Em seguida, compare rapidamente:
PS C:\> $lastLogon -gt $rebootTime
True
O código acima pode ser despejado em um script e / ou executado em um computador remoto. Eu só executei os comandos interativamente para demonstrar o resultado do exemplo.