Получите время последнего входа в систему, компьютер и имя пользователя вместе с Powershell

16626
Ruben.w

У меня есть скрипт, который получает время последнего входа в систему каждого компьютера в домене.

Мой сценарий:

$dcs = Get-ADComputer -Filter { OperatingSystem -NotLike '*Server*' } -Properties OperatingSystem  foreach($dc in $dcs) {  Get-ADComputer $dc.Name -Properties lastlogontimestamp |  Select-Object @}, @} } 

==================================

Результат:

Компьютер Lastlogon
-------- ---------
DC1 06.06.2013 16:38:24
DC2 06.06.2013 16:30:40

=============================================

Я также хочу узнать, кто / какая учетная запись сделала этот вход. Например:

Компьютер Lastlogon User
-------- ------------------ ----
DC1 06.06.2013 16:38:24 user2
DC2 6/06 / 2013 16:30:40 user1

0

2 ответа на вопрос

1
Tim Haintz

Этот может быть не идеальным, но он приведет вас на правильный путь. Чтобы получить точного последнего пользователя, пожалуйста, посмотрите этот скрипт . Это даст вам дополнительную информацию о том, как отфильтровать точного последнего пользователя. В приведенном ниже примере я использовал select-object -First 1, который должен быть довольно хорошим индикатором последнего зарегистрированного пользователя. Чтобы получить последнего зарегистрированного пользователя, вам нужно использовать

Get-WmiObject -Class Win32_UserProfile 

Чтобы «объединить» информацию Get-ADComputer и Get-WMIObject, я использовал хэш-таблицу.

Если вы запускаете это из учетной записи администратора домена, вы можете убрать часть -credential $ credential. В противном случае оставьте его, и вы сможете запустить его с обычной рабочей станции с установленными инструментами RSAT, чтобы был доступен Get-ADComputer.

Код ниже:

$computers = Get-ADComputer -Filter { OperatingSystem -NotLike '*Server*' } -Properties OperatingSystem $credential = Get-Credential -Message "Please enter your administrator username and password"  foreach($computer in $computers) {  $pcinfo = Get-ADComputer $computer.Name -Properties lastlogontimestamp | `  Select-Object @}, `  @}  $lastuserlogoninfo = Get-WmiObject -Class Win32_UserProfile -ComputerName $computer.name -Credential $credential | Select-Object -First 1 $SecIdentifier = New-Object System.Security.Principal.SecurityIdentifier($lastuserlogoninfo.SID) $username = $SecIdentifier.Translate([System.Security.Principal.NTAccount])  # Create hashtable for properties $properties = @{'Computer'=$pcinfo.Computer; 'LastLogon'=$pcinfo.Lastlogon; 'User'=$username.value } #end $properties write-output (New-Object -Typename PSObject -Property $properties) } 

Проверьте форматирование, когда вы его используете. Некоторые из них мне пришлось добавить в качестве символа escape (`), чтобы он поместился в окне скрипта.

Спасибо, Тим.

0
Frank

Это код Тима, и я обновил его, чтобы отобразить IP-адрес компьютера и операционную систему, а также экспортировать данные.

 $computers = Get-ADComputer -Filter { OperatingSystem -NotLike '*Server*'} -Properties OperatingSystem  foreach($computer in $computers) {  $pcinfo = Get-ADComputer $computer.Name -Properties ipv4Address, OperatingSystem ,lastlogontimestamp |  Select-Object @},  @},ipv4Address,OperatingSystem  $lastuserlogoninfo = Get-WmiObject -Class Win32_UserProfile -ComputerName $computer.name -Credential $credential | Select-Object -First 1 $SecIdentifier = New-Object System.Security.Principal.SecurityIdentifier($lastuserlogoninfo.SID) $username = $SecIdentifier.Translate([System.Security.Principal.NTAccount])  # Create hashtable for properties $properties = @{'Computer'=$pcinfo.Computer; 'LastLogon'=$pcinfo.Lastlogon; 'ipv4Address'=$pcinfo.ipv4Address; 'OperatingSystem'=$pcinfo.OperatingSystem 'User'=$username.value } #end $properties write-output (New-Object -Typename PSObject -Property $properties) | export-csv .\Computers.csv -append -notypeinformation -encoding "unicode"  } 

Выражение свойств Powershell Get-ADComputer

Пожалуйста, проверьте ваш код. Должны ли в этом быть галочки? Подсказка: используйте форматирование примера кода, а не блочную цитату. G-Man 6 лет назад 0
Обновлен до блока кода Frank 6 лет назад 0

Похожие вопросы