Verwenden von PowerShell zum Auflisten lokaler Benutzer:innen auf Windows-Systemen

PowerShell ist ein leistungsfähiges Tool im Arsenal von IT-Expert:innen, das häufig für die Automatisierung von Aufgaben und die nahtlose Extraktion von Daten genutzt wird. Eine kritische Aufgabe, mit der Managed Service Provider (MSPs) und Systemadministratoren häufig konfrontiert werden, ist die Auflistung von Benutzer:innen in einem Computersystem. Heute befassen wir uns mit einem PowerShell-Skript, das speziell für diesen Zweck entwickelt wurde: zum Auflisten lokaler Benutzer:innen. 

Hintergrund

In der heutigen schnelllebigen IT-Umgebung ist die Möglichkeit, schnell Daten über Systembenutzer:innen zu extrahieren, unbestreitbar von unschätzbarem Wert. Dies gilt vor allem in großen Unternehmen oder wenn neue Geräte oder Software eingeführt werden. Systemadministratoren und MSPs müssen oft wissen, wer wann auf was Zugriff hat. Das mitgelieferte PowerShell-Skript erfüllt diese Anforderung, indem es lokale Benutzer:innen auf einem Windows-Computer auflistet, so dass Fachleute schnell Einblicke gewinnen können.

Das Skript

#Requires -Version 2.0

<#
.SYNOPSIS
    Lists local computers' users.
.DESCRIPTION
    Lists local computers' users. By default it lists only the enabled users.
.EXAMPLE
    No parameters needed.
    Lists enabled users on the local computer.
.EXAMPLE
     -AllUsers
    Lists enabled and disabled users on the local computer.
.EXAMPLE
    PS C:> List-Users.ps1 -AllUsers
    Lists enabled and disabled users on the local computer.
.OUTPUTS
    System.Management.Automation.SecurityAccountsManager.LocalUser[]
.NOTES
    Minimum OS Architecture Supported: Windows 7, Windows Server 2012
    Release Notes:
    Initial Release
.COMPONENT
    ManageUsers
#>

[CmdletBinding()]
param (
    # Will return disabled users as well as enabled users
    [Switch]
    $AllUsers
)

begin {
    Write-Output "Starting List Users"
}

process {
    # If we are running powershell under a 32bit OS or running a 32bit version of powershell
    # or we don't have access to Get-LocalUser
    if (
        [Environment]::Is64BitProcess -ne [Environment]::Is64BitOperatingSystem -or
            (Get-Command -Name "Get-LocalUser" -ErrorAction SilentlyContinue).Count -eq 0
    ) {
        # Get users from net.exe user
        $Data = $(net.exe user) | Select-Object -Skip 4
        # Check if the command ran the way we wanted and the exit code is 0
        if ($($Data | Select-Object -last 2 | Select-Object -First 1) -like "*The command completed successfully.*" -and $LASTEXITCODE -eq 0) {
            # Process the output and get only the users
            $Users = $Data[0..($Data.Count - 3)] -split 's+' | Where-Object { -not $([String]::IsNullOrEmpty($_) -or [String]::IsNullOrWhiteSpace($_)) }
            # Loop through each user
            $Users | ForEach-Object {
                # Get the Account active property look for a Yes
                $Enabled = $(net.exe user $_) | Where-Object {
                    $_ -like "Account active*" -and
                    $($_ -split 's+' | Select-Object -Last 1) -like "Yes"
                }
                # Output Name and Enabled almost like how Get-LocalUser displays it's data
                [PSCustomObject]@{
                    Name    = $_
                    Enabled = if ($Enabled -like "*Yes*") { $true }else { $false }
                }
            } | Where-Object { if ($AllUsers) { $_.Enabled }else { $true } }
        }
        else {
            exit 1
        }
    }
    else {
        try {
            if ($AllUsers) {
                Get-LocalUser
            }
            else {
                Get-LocalUser | Where-Object { $_.Enabled -eq $true }
            }
        }
        catch {
            Write-Error $_
            exit 1
        }
    }
}

end {
    Write-Output "Completed List Users"
}

 

Zugriff auf über 300 Skripte im NinjaOne Dojo

Zugang erhalten

Detailansicht

Im Kern ist das Drehbuch recht einfach. Es beginnt mit der Definition des Parameters $AllUsers, der bei seinem Aufruf sowohl aktivierte als auch deaktivierte Benutzer:innen in die Ausgabe einbezieht. Im Block „prozess“ überprüft das Skript zunächst die Systemarchitektur und die Verfügbarkeit des Cmdlets “ Get-LocalUser „. Wenn eine Nichtübereinstimmung vorliegt oder das Cmdlet nicht verfügbar ist, wird auf den älteren net.exe-Benutzerbefehl zurückgegriffen. Die aus beiden Methoden abgeleiteten Daten werden dann verarbeitet, um die Benutzer aufzulisten. Wenn der Befehl net.exe user verwendet wird, ruft das Skript den Benutzerstatus ab und prüft, ob jedes Konto aktiv ist. Anschließend werden diese Daten strukturiert ausgegeben. In Szenarien, in denen Get-LocalUser verfügbar ist, werden die Benutzer:innen direkt abgerufen und aufgelistet, wobei nur die aktivierten Benutzer:innen gefiltert werden, sofern nicht der Parameter $AllUsers aufgerufen wird.

Potenzielle Anwendungsfälle

Stellen Sie sich eine IT-Fachkraft, Jane, vor, die in ihrem Unternehmen ein neues Software-Update einführt. Vor der Bereitstellung des Updates muss sie die Benutzerkonten auf jedem Rechner überprüfen, um sicherzustellen, dass alle Softwarelizenzen korrekt zugewiesen sind. Anstatt jeden Computer manuell zu überprüfen, setzt sie das PowerShell-Skript ein und spart so Stunden ihrer wertvollen Zeit.

Vergleiche

Während das Skript nach Möglichkeit das Cmdlet “ Get-LocalUser “ verwendet, ist der alternative Ansatz mit net.exe user eine Anspielung auf ältere Systeme. Einige andere Skripte verlassen sich möglicherweise nur auf neuere Cmdlets oder Methoden. Der duale Ansatz des bereitgestellten Skripts gewährleistet die Kompatibilität mit einer Vielzahl von Windows-Systemen und macht es vielseitig in unterschiedlichen Umgebungen einsetzbar.

FAQs

  • Kann das Skript auf jedem Windows-Rechner verwendet werden?
    Es ist für Windows 7 und Windows Server 2012 und höher konzipiert.
  • Was ist, wenn Get-LocalUser auf meinem System nicht verfügbar ist?
    Das Skript greift automatisch auf den net.exe-Benutzerbefehl zurück, wenn Get-LocalUser nicht verfügbar ist oder die Architektur nicht übereinstimmt.

Auswirkungen

Eine Liste der Benutzer:innen eines Computers kann einen Überblick über potenzielle Zugriffspunkte für unbefugtes Personal geben. Im Kontext der IT-Sicherheit ist das Verständnis dieser Benutzer und ihres Status ein grundlegender Schritt, um sicherzustellen, dass nur autorisierte Personen Zugang haben.

Empfehlungen

  • Aktualisieren Sie Ihre PowerShell regelmäßig, um Zugriff auf die neuesten Cmdlets zu haben.
  • Führen Sie immer Skripte aus vertrauenswürdigen Quellen aus, um die Systemsicherheit zu gewährleisten.
  • Prüfen Sie regelmäßig die Benutzerlisten, um sicherzustellen, dass keine nicht autorisierten Konten hinzugefügt wurden.

Abschließende Überlegungen

NinjaOne mit seinen robusten IT-Management-Lösungen ergänzt Tools wie dieses PowerShell-Skript. Wenn IT-Profis lokale Benutzer:innen mit unserem PowerShell-Skript auflisten, können sie die umfassende Plattform von NinjaOne nutzen, um diese Benutzer:innen zu verwalten, zu überwachen und abzusichern und so sicherzustellen, dass die IT-Infrastruktur sowohl optimiert als auch sicher bleibt.

Nächste Schritte

Der Aufbau eines effizienten und effektiven IT-Teams erfordert eine zentralisierte Lösung, die als einheitliches Tool zur Bereitstellung von IT-Dienstleistungen fungiert. NinjaOne ermöglicht es IT-Teams, alle Geräte zu überwachen, zu verwalten, zu sichern und zu unterstützen, unabhängig vom Standort, ohne dass eine komplexe Infrastruktur vor Ort erforderlich ist.

Erfahren Sie mehr über NinjaOne Remote Script Deployment, sehen Sie sich eine Live-Tour an oder starten Sie Ihre kostenlose Testversion unserer NinjaOne Plattform.

Kategorien:

Das könnte Sie auch interessieren

×

Sehen Sie NinjaOne in Aktion!

Mit dem Absenden dieses Formulars akzeptiere ich die Datenschutzerklärung von NinjaOne.

NinjaOne Allgemeine Geschäftsbedingungen für Skripte

Indem Sie unten auf die Schaltfläche „Ich akzeptiere“ klicken, erklären Sie Ihr Einverständnis mit den folgenden rechtlichen Bedingungen sowie mit unseren Nutzungsbedingungen:

  • Eigentumsrechte: NinjaOne besitzt und wird weiterhin alle Rechte, Titel und Interessen an dem Skript (einschließlich des Urheberrechts) behalten. NinjaOne gewährt Ihnen eine eingeschränkte Lizenz zur Nutzung des Skripts in Übereinstimmung mit diesen rechtlichen Bedingungen.
  • Einschränkung der Nutzung: Sie dürfen das Skript nur für Ihre legitimen persönlichen oder internen Geschäftszwecke verwenden und es nicht an Dritte weitergeben.
  • Verbot der Wiederveröffentlichung: Sie sind unter keinen Umständen berechtigt, das Skript in einer Skriptbibliothek, die einem anderen Softwareanbieter gehört oder von diesem kontrolliert wird, erneut zu veröffentlichen.
  • Gewährleistungsausschluss: Das Skript wird „wie gesehen“ und „wie verfügbar“ bereitgestellt, ohne jegliche Garantie. NinjaOne gibt keine Versprechen oder Garantien, dass das Skript frei von Fehlern ist oder dass es Ihre speziellen Bedürfnisse oder Erwartungen erfüllt.
  • Risikoübernahme: Die Verwendung des Skripts erfolgt auf eigene Gefahr. Sie erkennen an, dass die Nutzung des Skripts mit bestimmten Risiken verbunden ist, und Sie verstehen und übernehmen jedes dieser Risiken.
  • Verzicht und Freigabe: Sie machen NinjaOne nicht für nachteilige oder unbeabsichtigte Folgen verantwortlich, die sich aus Ihrer Nutzung des Skripts ergeben, und Sie verzichten auf alle gesetzlichen oder billigkeitsrechtlichen Rechte oder Rechtsmittel, die Sie gegen NinjaOne im Zusammenhang mit Ihrer Nutzung des Skripts haben könnten.
  • EULA: Wenn Sie ein NinjaOne-Kunde sind, unterliegt Ihre Nutzung des Skripts dem für Sie geltenden Endbenutzer-Lizenzvertrag (EULA).