Demo ansehen×
×

Sehen Sie NinjaOne in Aktion!

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

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.

Next Steps

Building an efficient and effective IT team requires a centralized solution that acts as your core service deliver tool. NinjaOne enables IT teams to monitor, manage, secure, and support all their devices, wherever they are, without the need for complex on-premises infrastructure.

Learn more about NinjaOne Remote Script Deployment, check out a live tour, or start your free trial of the NinjaOne platform.

Kategorien:

Das könnte Sie auch interessieren

NinjaOne Terms & Conditions

By clicking the “I Accept” button below, you indicate your acceptance of the following legal terms as well as our Terms of Use:

  • Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms.
  • Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party.
  • Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library belonging to or under the control of any other software provider.
  • Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations.
  • Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks.
  • Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script.
  • EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).