Holen Sie sich die letzte Anmeldezeit, den Computer und den Benutzernamen zusammen mit Powershell

16734
Ruben.w

Ich habe ein Skript, das die letzten Anmeldezeiten jedes Computers in der Domäne abruft.

Mein Skript:

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

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

Ergebnis:

Computer Lastlogon
-------- ---------
DC1 6/06/2013 16:38:24
DC2 6/06/2013 16:30:40

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

Ich möchte auch, wer / welches Konto diese Anmeldung gemacht hat. Zum Beispiel:

Computer Lastlogon User
-------- ------------------ ----
DC1 6/06/2013 16:38:24 user2 DC2 6/06
/ 2013 16:30:40 user1

0

2 Antworten auf die Frage

1
Tim Haintz

Diese ist vielleicht nicht perfekt, bringt Sie aber auf den richtigen Weg. Den genauen letzten Benutzer finden Sie in diesem Skript . Sie erhalten weitere Informationen zum Filtern des genauen letzten Benutzers. Im folgenden Beispiel habe ich select-object-First 1 verwendet, was ein ziemlich guter Indikator für den zuletzt angemeldeten Benutzer sein sollte. Um den zuletzt angemeldeten Benutzer zu erhalten, müssen Sie verwenden

Get-WmiObject -Class Win32_UserProfile 

Um die Informationen von Get-ADComputer und Get-WMIObject zu "verbinden", habe ich eine Hash-Tabelle verwendet.

Wenn Sie dies von einem Domänenadministratorkonto aus ausführen, können Sie den Berechtigungsteil -credential $ herausholen. Andernfalls lassen Sie es in, und Sie können es von einer normalen Arbeitsstation aus ausführen, wenn die RSAT-Tools installiert sind. Get-ADComputer ist daher verfügbar.

Code unten:

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

Überprüfen Sie die Formatierung, wenn Sie sie verwenden. Einiges davon musste ich in ein Escape-Zeichen (`) einfügen, um es in das Skriptfenster einzufügen.

Danke, Tim.

0
Frank

Dies ist Tims Code und ich habe ihn aktualisiert, um die IP-Adresse und das Betriebssystem des Computers anzuzeigen und Daten zu exportieren.

 $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-Eigenschaften für Get-ADComputer-Eigenschaften

Bitte überprüfen Sie Ihren Code. Soll es Back-Ticks geben? Hinweis: Verwenden Sie die Codebeispiel-Formatierung anstelle von Zitat blockieren. G-Man vor 6 Jahren 0
Code-Block aktualisiert Frank vor 6 Jahren 0