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-Key: 217339

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

Printed on: April 19, 2024 at 14:04 o'clock

Member: colinardo
colinardo Sep 19, 2013 at 10:54:37 (UTC)
Goto Top
Hallo Casy1986,
schau mal in meine Anleitung zum Thema -> Anmeldestatus von Benutzern im Active Directory speichern

Grüße Uwe
Member: Mvinogradac
Mvinogradac Sep 25, 2013 at 11:59:52 (UTC)
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
##########################################################################