IT-Fachleute und Managed Service Provider (MSPs) wissen, wie es geht: Manchmal müssen Sie ein lokales Konto auf einem Windows-Rechner aus Sicherheits-, Compliance- oder anderen betrieblichen Gründen deaktivieren. Natürlich gibt es dafür integrierte GUI-Tools, aber wenn man mehrere Systeme verwaltet, ist Automatisierung der Schlüssel. Heute werden wir uns mit einem PowerShell-Skript befassen, das diese Aufgabe automatisiert und damit schneller, sicherer und leichter wiederholbar macht.
Mit dem Skript können Sie ein lokales Konto unter Windows über PowerShell deaktivieren. Dieses PowerShell-Skript richtet sich speziell an diejenigen, die wissen möchten, wie man einen Windows OS-Benutzer über PowerShell deaktiviert, oder die sich fragen, wie man ein lokales Konto unter Windows deaktiviert. Lassen Sie uns also ohne Umschweife das Drehbuch analysieren.
Das Skript
#Requires -Version 5.1 <# .SYNOPSIS Disable a local account .DESCRIPTION Disable a local account .EXAMPLE -UserName "AdminTest" Disables the account AdminTest .EXAMPLE PS C:> Disable-LocalAdminAccount.ps1 -UserName "Administrator" Disables the account AdminTest .OUTPUTS None String[] .NOTES Minimum OS Architecture Supported: Windows 10, Windows Server 2016 Release Notes: Initial Release (c) 2023 NinjaOne By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/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 or website 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). .COMPONENT LocalBuiltInAccountManagement #> [CmdletBinding()] param ( # User name of a local account [Parameter(Mandatory = $true)] [String] $UserName ) begin { function Test-IsElevated { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object System.Security.Principal.WindowsPrincipal($id) if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Output $true } else { Write-Output $false } } } process { if (-not (Test-IsElevated)) { Write-Error -Message "Access Denied. Please run with Administrator privileges." exit 1 } if ($(Get-Command -Name "Disable-LocalUser" -ErrorAction SilentlyContinue)) { # Disables $UserName using Disable-LocalUser try { Disable-LocalUser $UserName -Confirm:$false } catch { Write-Error $_ exit 1 } } else { # Disables $UserName using net.exe net.exe user $UserName /active:no if ($LASTEXITCODE -gt 0) { exit 1 } } } end {}
Zugriff auf über 300 Skripte im NinjaOne Dojo
Das Drehbuch verstehen
Hier ist eine kurze Zusammenfassung:
- Das Skript prüft zunächst, ob es mit administrativen Rechten ausgeführt wird. Ist dies nicht der Fall, wird das Programm angehalten und eine Fehlermeldung ausgegeben.
- Es wird geprüft, ob der integrierte Befehl Disable-LocalUser vorhanden ist. Wenn sie existiert, verwendet sie diese. Andernfalls greift es auf den Befehl net.exe user zurück, um das Benutzerkonto zu deaktivieren.
Das Skript schreibt vor, dass die Variable $UserName ausgefüllt werden muss. Dies ist das lokale Konto, das Sie deaktivieren möchten.
Voraussetzungen
- OS-Anforderungen: Unterstützt werden mindestens die Betriebssystemarchitekturen Windows 10 und Windows Server 2016.
- PowerShell-Version: Erfordert mindestens PowerShell 5.1.
Sicherung & Wiederherstellen: Mit Vorsicht vorgehen
Bevor Sie ein PowerShell-Skript ausführen, das die Systemeinstellungen ändert, sollten Sie unbedingt eine Sicherungskopie der vorhandenen Einstellungen oder besser noch des gesamten Systems erstellen. Dadurch wird sichergestellt, dass Sie zum vorherigen Zustand zurückkehren können, falls etwas schief geht. Hier sind einige Sicherungsmethoden, die Sie verwenden können:
Systemwiederherstellungspunkt
Das Erstellen eines Systemwiederherstellungspunkts ist eine einfache und effektive Methode, um Ihre aktuellen Einstellungen zu sichern. So geht’s:
- Öffnen Sie das Startmenü und suchen Sie nach “Einen Wiederherstellungspunkt erstellen”
- Klicken Sie auf das entsprechende Ergebnis, um das Fenster Systemeigenschaften zu öffnen.
- Gehen Sie zur Registerkarte “Systemschutz” und klicken Sie auf “Erstellen”
- Benennen Sie Ihren Wiederherstellungspunkt und speichern Sie ihn.
So führen Sie eine vollständige Systemsicherung durch
Für eine vollständige Sicherung können Sie ein Systemabbild erstellen:
- Öffnen Sie die Systemsteuerung.
- Navigieren Sie zu “System und Sicherheit” > “Sicherung und Wiederherstellung (Windows 7)”
- Klicken Sie im linken Fensterbereich auf “Systemabbild erstellen”
- Folgen Sie den Anweisungen des Assistenten, um die Sicherung abzuschließen.
Hinweis: Testen Sie immer den Wiederherstellungsprozess, um sicherzustellen, dass Ihre Sicherung gültig ist.
Fehlerbehandlung: Was tun, wenn etwas schief läuft
Das PowerShell-Skript enthält eine grundlegende Fehlerbehandlung, aber wie bei jedem Skript können Fehler auftreten. Im Folgenden finden Sie einige häufige Fehler und Tipps zur Fehlerbehebung:
“Zugriff verweigert. Bitte mit Administratorrechten ausführen.”
Dieser Fehler tritt auf, wenn Sie versuchen, das Skript ohne Administratorrechte auszuführen. Klicken Sie mit der rechten Maustaste auf das PowerShell-Fenster und wählen Sie “Als Administrator ausführen”
Das Benutzerkonto existiert nicht
Wenn Sie einen Benutzernamen eingeben, der nicht existiert, wird das Skript einen Fehler ausgeben. Überprüfen Sie den Benutzernamen und versuchen Sie es erneut.
Das Skript wird nicht ausgeführt
Wenn Ihr Skript nicht ausgeführt wird, überprüfen Sie die Einstellungen der PowerShell-Ausführungsrichtlinie. Möglicherweise müssen Sie die Richtlinie ändern, damit das Skript ausgeführt werden kann. Verwenden Sie den folgenden Befehl, um ihn zu ändern:
Set-ExecutionPolicy RemoteSigned
Denken Sie daran, sie nach der Ausführung Ihres Skripts wieder auf die ursprüngliche Einstellung zurückzusetzen.
Catch-All-Fehlerbehandlung
Wenn Sie das Skript erweitern möchten, um Fehler in einer Textdatei zu protokollieren, können Sie den Catch-Block im Skript wie folgt ändern:
catch { Write-Error $_ “Fehler: $_” | Out-File “C:pathtoerrorlog.txt” -Append exit 1 }
Hinweis: Ersetzen Sie “C:pathtoerrorlog.txt” durch den gewünschten Pfad zur Protokolldatei.
Durch die Einbindung dieser Sicherungs- und Fehlerbehandlungsmethoden sorgen Sie für zusätzliche Sicherheit und Zuverlässigkeit bei der Ausführung des Skripts.
Wie hilfreich ist das?
Für IT-Fachleute:
- Sicherheit: Wenn Sie die IT-Infrastruktur eines Unternehmens verwalten, ist es wichtig zu wissen, wie Sie ein lokales Konto unter Windows deaktivieren können. Nicht autorisierte oder redundante Konten sind ein Sicherheitsrisiko.
- Compliance: Die Einhaltung gesetzlicher Vorschriften erfordert häufig die Sperrung bestimmter Konten. Durch die Automatisierung dieses Prozesses wird sichergestellt, dass keine Schritte übersehen werden.
- Automatisierung und Skalierbarkeit: Das Skript kann als Teil einer größeren Automatisierungssequenz eingebunden werden, so dass sich Konten auf vielen Rechnern gleichzeitig deaktivieren lassen.
Für MSPs:
- Mehrmandantenfähigkeit: MSPs können dieses Skript problemlos in ihre zentralen Verwaltungssysteme integrieren. Dies vereinfacht die Verwaltung mehrerer Clients über ein einziges Dashboard.
- Operative Effizienz: Durch die Automatisierungsfunktion dieses PowerShell-Skripts wird der betriebliche Overhead reduziert.
- SLAs und Kundenzufriedenheit: Die Automatisierung sorgt für schnellere Reaktionszeiten und die Einhaltung von SLAs, was sich direkt in der Kundenzufriedenheit niederschlägt.
Abschließende Überlegungen
Wenn es um die Verwaltung lokaler Konten geht, ist das Skript Disable-LocalAdminAccount.ps1 ein leistungsfähiges Werkzeug, das Sie in Ihrem Arsenal haben sollten. Nutzen Sie die Möglichkeiten der Automatisierung und verbessern Sie Ihre Sicherheitsmaßnahmen, indem Sie dieses Skript in Ihre Arbeitsabläufe integrieren. In der schnelllebigen IT-Landschaft von heute ist Automatisierung nicht nur ein Luxus, sondern eine Notwendigkeit.