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.