Blog

Hier poste ich dinge zu Themen die mich beschäftigten.

Neueste 5 Einträge

  • PHP: sende Mail
  • Powershell: gruppename like finden und aktivierte user zaehlen
  • HW und SW auslesen und exportieren
  • Angeschlossene Monitore auslesen
  • bash: deepL Pro Paket MAC OS

2023-04-30

Powershell Script Nutzer finden die in den letzten x Stunden…

Um Benutzer zu finden, die innerhalb der letzten X Stunden Microsoft Edge, Mozilla Firefox oder Google Chrome verwendet haben, können Sie das folgende PowerShell-Skript verwenden. Dieses Skript durchsucht die Windows-Ereignisprotokolle auf Anwendungsstart-Ereignisse und erfasst die Benutzernamen und die Gesamtnutzungszeit für jeden Benutzer.

Bitte beachten Sie, dass das Skript möglicherweise nicht in allen Fällen funktioniert, da es von der Verfügbarkeit und Struktur der Ereignisprotokolle abhängt.

“`powershell
$hours = 2 # Setzen Sie die Anzahl der Stunden, die berücksichtigt werden sollen
$logFile = “C:tmpUserBrowserUsage.log” # Pfad zur Logdatei
$startTime = (Get-Date).AddHours(-$hours)

# Browser-Namen und Prozessnamen definieren
$browsers = @(
    @{Name = “Microsoft Edge”; ProcessName = “msedge”},
    @{Name = “Mozilla Firefox”; ProcessName = “firefox”},
    @{Name = “Google Chrome”; ProcessName = “chrome”}
)

# Funktion zum Abrufen der Anwendungsstart-Ereignisse
function Get-AppStartEvents {
    param (
        [string]$ProcessName,
        [datetime]$StartTime
    )

    Get-WinEvent -FilterHashtable @{
        LogName = “Security”
        Id = 4688
        StartTime = $StartTime
    } | Where-Object {
        $_.Properties[5].Value -eq $ProcessName
    }
}

# Funktion zum Schreiben in die Logdatei
function Write-Log {
    param (
        [string]$Message
    )

    Add-Content -Path $logFile -Value $Message
}

# Hauptausführung
$userUsage = @{}

foreach ($browser in $browsers) {
    $events = Get-AppStartEvents -ProcessName $browser.ProcessName -StartTime $startTime

    foreach ($event in $events) {
        $username = $event.Properties[1].Value

        if (-not $userUsage.ContainsKey($username)) {
            $userUsage[$username] = @{}
        }

        if (-not $userUsage[$username].ContainsKey($browser.Name)) {
            $userUsage[$username][$browser.Name] = 0
        }

        $userUsage[$username][$browser.Name]++
    }
}

foreach ($user in $userUsage.Keys) {
    Write-Log “User: $user”

    foreach ($browser in $browsers) {
        $browserName = $browser.Name
        $usageCount = $userUsage[$user][$browserName]
        Write-Log “$browserName Usage Count: $($usageCount -eq $null ? 0 : $usageCount)”
    }

    Write-Log “”
}
“`

Das Skript gibt die Benutzernamen und die Nutzungsanzahl der Browser innerhalb der angegebenen Zeit in die angegebene Logdatei aus. Sie können `$hours` anpassen, um die Anzahl der Stunden festzulegen, die berücksichtigt werden sollen, und `$logFile`, um den Pfad zur Logdatei zu ändern.

Admin - 19:23:31 @ Projekte, Powershell-Skripte | Kommentar hinzufügen