mvinogradac
Goto Top

Angemeldete User auslesen

Hallo Zusammen,

ich brauche einen kleinen Rat von euch.

Ich werde ein Powershell Skript schreiben, wo man für eine bestimmte Uhrzeit die angemeldeten User auswertet. (Ohne Personeninformationen nur die Anzahl).

Möglichkeiten

1. Über die AD mit dem Attribut "lastlogon" und "lastlogoff"
oder

2. Abfrage per WMI welcher PC an ist und ob ein User angemeldet ist als eine Art Count

GRüße

Content-ID: 217339

Url: https://administrator.de/contentid/217339

Ausgedruckt am: 14.11.2024 um 21:11 Uhr

colinardo
colinardo 19.09.2013 um 12:54:37 Uhr
Goto Top
Hallo Casy1986,
schau mal in meine Anleitung zum Thema -> Anmeldestatus von Benutzern im Active Directory speichern

Grüße Uwe
Mvinogradac
Mvinogradac 25.09.2013 um 13:59:52 Uhr
Goto Top
Vielen Dank Uwe für diese Anleitung, ich habe es aber dann über denn Term Lastlogon gelöst.
Hier die Version nur mit einer CSV Datei schreiben, habe aber auch noch eine wo direkt in Excel schreibt.

  1. Script Name: User_Lastlogon.ps1
#=========================================================================
  1. $VerbosePreference = "SilentlyContinue" --> Keine Ausgabe
  2. $VerbosePreference = "Continue" --> Verbose Ausgabe
  3. Vorraussetzung: Keine
#=========================================================================
  1. VERSION - Übersicht (aktuellste Version oben)
#=========================================================================
  1. Version: 0.0.3
  2. Datum: 25.09.2013
  3. Zeit: 00:00
  4. Autor: Marko Vinogradac
  5. E-Mail: Vinogradac@mvc-computertechnik.de
  6. Änderung: Output Ergebniss angepasst
#=========================================================================
  1. Version: 0.0.2
  2. Datum: 25.09.2013
  3. Zeit: 00:00
  4. Autor: Marko Vinogradac
  5. E-Mail: Vinogradac@mvc-computertechnik.de
  6. Änderung: Ergebniss wird in eine CSV Datei geschrieben
#=========================================================================
  1. Version: 0.0.1
  2. Datum: 21.09.2013
  3. Zeit: 00:00
  4. Autor: Marko Vinogradac
  5. E-Mail: Vinogradac@mvc-computertechnik.de
#=========================================================================
Begin {

#=========================================================================
#=========================================================================
$VerbosePreference = "Continue"

#=========================================================================
#=========================================================================
$DateTime1 = (Get-Date).AddHours(-1)
$DateTime2 = $DateTime1.ToShortTimeString()
$DateTime3 = (Get-Date).AddHours(-0)
$DateTime4 = $DateTime3.ToShortTimeString()
$CurrentDate = (Get-Date -uformat "%d.%m.%Y")

#=========================================================================
#=========================================================================
$Date = (Get-Date -format "yyyy-MM-dd-HH-mm");
$Logfile = "C:\Temp\User_Logon_Auswertung.csv"
Function LogWrite
{
Param ($logstring)
Add-content $Logfile -value $logstring
};

#=========================================================================
#=========================================================================
function FindAllUsers() {
$searchFilter = "(&(objectCategory=user)(objectClass=user))"
$varDomain = New-Object System.DirectoryServices.DirectoryEntry
$varDomain.RefreshCache()
$varSearcher = New-Object System.DirectoryServices.DirectorySearcher
$varSearcher.SearchRoot = $varDomain
$varSearcher.SearchScope = "subtree"
$varSearcher.Filter = $searchFilter
$varSearcher.PageSize = 1000
$varProperties = $varSearcher.PropertiesToLoad.Add("lastlogon")
$varOut = $varSearcher.FindAll()
return $varOut
};
};

Process {
Write-Verbose "Starte Process Teil...."
try {
#=========================================================================
#=========================================================================
Write-Verbose "Filtern der User mit LastLogon eintrag..."
$varUsers = FindAllUsers;
$varLastLogon = $varUsers | Where-Object {$_.Properties["lastlogon"] -ne $null};

#=========================================================================
#=========================================================================
Write-Verbose "Filtern der User nach Zeit und Ergebniss in CSV Datei schreiben..."
$varDate = $varLastLogon | Select-Object @{Name="lastlogon"; Expression = {[datetime]::fromfiletime($_.Properties["lastlogon"])}} | where-object {$_.lastlogon -gt $DateTime1 -and $_.lastlogon -lt $DateTime2}
If ($varDate.Count -eq $Null) {
LogWrite "$CurrentDate;$DateTime2 bis $DateTime4;0"
} else {
$Counter = $varDate.Count
LogWrite "$CurrentDate;$DateTime2 bis $DateTime4;$Counter"
};

#=========================================================================
#=========================================================================
} catch {
Write-Error $_;
};
};
  1. SCRIPT - Ende: User_Lastlogon.ps1
##########################################################################