Im heutigen digitalen Zeitalter ist für die Systemverwaltung und das Sicherheitsmanagement häufig der Einsatz von Skripten erforderlich. Ein wichtiger Aspekt bei der Aufrechterhaltung der Systemsicherheit ist die Überwachung der lokalen Administratoren auf Windows-Rechnern. Die Verwendung von PowerShell zum Abrufen dieser Daten kann für viele IT-Profis einen entscheidenden Vorteil darstellen. Lesen Sie diesen Artikel, um herauszufinden, wie Sie mit PowerShell lokale Administratoren finden können.
Hintergrund
PowerShell hat sich zu einer robusten Skriptsprache und Shell entwickelt. Vor allem für IT-Profis und Managed Service Provider (MSPs) sind Skripte wie das vorliegende unverzichtbar. MSPs verwalten oft mehrere Kundenumgebungen, was es schwierig macht, jedes Detail manuell zu überwachen. Durch den Einsatz von Skripten zum Abrufen von Informationen, wie z. B. der Liste lokaler Administratoren, können MSPs sicherstellen, dass nur autorisierte Personen über einen erweiterten Zugriff verfügen, und sich so vor potenziellen Bedrohungen und bösartigen Aktivitäten schützen.
Das Skript
<# .SYNOPSIS Updates a custom field with a list of local admins. .DESCRIPTION Updates a custom field with a list of local admins. .EXAMPLE No parameter needed Local Admins Found: Administrator, kbohlander, TESTDomain Admins Attempting to set Custom Field: LocalAdmins PARAMETER: -CustomField "ReplaceWithAnyTextCustomField" Updates the custom field you specified (defaults to "LocalAdmins"). The Custom Field needs to be writable by scripts (otherwise the script will report it as not found). PARAMETER: -Delimiter "ReplaceWithYourDesiredDelimiter" Places whatever is entered encased of quotes between each user name. See below example. .EXAMPLE -Delimiter " - " Local Admins Found: Administrator - kbohlander - TESTDomain Admins Attempting to set Custom Field: LocalAdmins .OUTPUTS None .NOTES Minimum OS Architecture Supported: Windows 7, Windows Server 2008 Release Notes: Switched to using net localgroup as it's the most reliable. Removed PowerShell 5.1 requirement. 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). #> [CmdletBinding()] param ( [Parameter()] [String]$CustomField = "LocalAdmins", [Parameter()] [String]$Delimiter = ', ' ) begin { if ($env:customFieldName -and $env:customFieldName -notlike "null") { $CustomField = $env:customFieldName } if ($env:delimiter -and $env:delimiter -notlike "null") { $Delimiter = $env:delimiter } $CheckNinjaCommand = "Ninja-Property-Set" } process { # Get objects in the Administrators group, includes user objects and groups $Users = net.exe localgroup "Administrators" | Where-Object { $_ -AND $_ -notmatch "command completed successfully" } | Select-Object -Skip 4 if (-not $Users) { Write-Error "[Error] No user's found! This is extremely unlikely is something blocking access to 'net localgroup administrators'?" exit 1 } Write-Host "Local Admins Found (Users & Groups): $($Users -join $Delimiter)" if ($(Get-Command $CheckNinjaCommand -ErrorAction SilentlyContinue).Name -like $CheckNinjaCommand -and -not [string]::IsNullOrEmpty($CustomField) -and -not [string]::IsNullOrWhiteSpace($CustomField)) { Write-Host "Attempting to set Custom Field: $CustomField" Ninja-Property-Set -Name $CustomField -Value $($Users -join $Delimiter) } else { Write-Warning "Unable to set customfield either due to legacy OS or this script is not running as an elevated user." } } end { }
Zugriff auf über 300 Skripte im NinjaOne Dojo
Detailansicht
Das Skript beginnt mit dem Festlegen von Standardparametern, insbesondere für ein benutzerdefiniertes Feld namens „LocalAdmins“, und verwendet ein Komma als Standardtrennzeichen. Und so funktioniert es:
- Initialisierung: Das Skript beginnt mit der Einrichtung der notwendigen Befehle, „Get-LocalGroupMember“ zum Abrufen lokaler Gruppenmitglieder und „NinjaOne-Property-Set“ zum Setzen von Eigenschaften auf NinjaOne, einer renommierten IT-Management-Plattform.
- Abruf von Administratoren: Im Prozessblock prüft das Skript, ob der Befehl „Get-LocalGroupMember“ verfügbar ist. Ist dies der Fall, werden die lokalen Administratoren abgerufen. Wenn nicht, wird standardmäßig der Befehl net.exe verwendet.
- Formatierung des Outputs: Nachdem die Liste der Administratoren abgerufen wurde, werden die Benutzernamen formatiert, indem sie von einem Domänen- oder Rechnernamen getrennt werden.
- NinjaOne-Integration: Zum Schluss prüft das Skript, ob der Befehl „NinjaOne-Property-Set“ verfügbar ist und aktualisiert dann das benutzerdefinierte Feld in NinjaOne mit der Liste der lokalen Administratoren.
Potenzielle Anwendungsfälle
Stellen Sie sich vor, Sie sind IT-Administrator in einem mittelgroßen Unternehmen mit einer wachsenden Zahl von Außendienstmitarbeiter:innen. Da sich die Mitarbeiter:innen von verschiedenen Standorten und Geräten aus anmelden, muss sichergestellt werden, dass nur befugte Personen über einen administrativen Zugang verfügen. Mit diesem Skript kann ein IT-Experte die Liste aller lokalen Administratoren auf den verschiedenen Arbeitsplätzen abrufen und so den Zugriff überprüfen und gegebenenfalls Korrekturmaßnahmen ergreifen.
Vergleiche
Es gibt zwar mehrere Möglichkeiten, eine Liste lokaler Administratoren abzurufen, z. B. über grafische Benutzeroberflächen oder Tools von Drittanbietern, aber PowerShell-Skripts bieten Automatisierung, Skalierbarkeit und einfache Integration. Während die systemeigene grafische Benutzeroberfläche „Computer Management“ beispielsweise die Überprüfung lokaler Administratoren auf einer einzelnen Workstation ermöglicht, kann unser Skript auf mehrere Rechner skaliert werden und bietet so eine effizientere Möglichkeit, diese Daten abzurufen, insbesondere für MSPs, die zahlreiche Client-Umgebungen verwalten.
FAQs
- Gibt es dieses Skript nur für Windows?
Ja, dieses Skript zielt auf Windows-Rechner ab, mit Unterstützung von Windows 10 und Windows Server 2016. - Kann ich das Begrenzungszeichen ändern?
Ja, das Begrenzungszeichen kann mit dem Parameter -Delimiter angepasst werden. - Brauche ich für dieses Skript immer NinjaOne?
Nein, das Skript prüft, ob der Befehl NinjaOne verfügbar ist. Wenn sie nicht verfügbar ist, wird nur die Liste angezeigt und es wird keine Aktualisierung auf NinjaOne versucht.
Auswirkungen
Für die IT-Sicherheit ist es wichtig zu wissen, wer über administrative Rechte verfügt. Unbefugte oder böswillige Administratoren können Systemänderungen vornehmen, bösartige Software installieren oder auf vertrauliche Informationen zugreifen. Durch die regelmäßige Überwachung und Prüfung lokaler Administratoren können Unternehmen potenzielle Sicherheitsrisiken erheblich eindämmen.
Empfehlungen
- Regelmäßige Audits: Führen Sie dieses Skript regelmäßig aus, um eine aktuelle Liste der lokalen Administratoren zu erhalten.
- Integration in die Überwachung: Integrieren Sie die Ausgabe in Überwachungslösungen, um Warnmeldungen bei Änderungen an der Liste der lokalen Administratoren zu erhalten.
- Dokumentation: Führen Sie eine Dokumentation für alle Benutzer:innen, denen lokale administrative Rechte gewährt wurden, und stellen Sie sicher, dass es für jede Zuweisung einen gültigen geschäftlichen Grund gibt.
Abschließende Überlegungen
Während PowerShell-Skripte den Abruf und die Verwaltung lokaler Administratoren erheblich vereinfachen, erweitern Plattformen wie NinjaOne diese Funktionalitäten. Die nahtlose Integrationsfähigkeit von NinjaOne, gepaart mit robusten IT-Management-Tools, stellt sicher, dass Systemadministratoren immer die Kontrolle haben, schnell auf Änderungen reagieren können und optimale Systemsicherheit und -leistung gewährleisten.