PowerShell beherrschen: Benutzerkontenverwaltung unter Windows

Die wichtigsten Erkenntnisse:

  • Automatisierte Kontrolle: Das Skript automatisiert den Prozess der Aktivierung oder Deaktivierung der Erstellung von Microsoft-Konten und verbessert so die Effizienz der Benutzerkontenverwaltung unter Windows.
  • Verbesserung der Sicherheit: Durch die Kontrolle der Kontoerstellung verbessert das Skript die Sicherheitslage von Windows-Umgebungen erheblich.
  • Flexibilität der Parameter: Bietet Anpassungsmöglichkeiten durch Parameter wie Allow, BlockLogin und ForceReboot, die sich an unterschiedliche administrative Anforderungen anpassen lassen.
  • Änderung des Registrierungsschlüssels: Es funktioniert durch die Änderung bestimmter Registrierungsschlüssel, die die Erstellung von Konten und Nutzungsrichtlinien regeln.
  • Überlegungen zur Kompatibilität: Das Skript wurde in erster Linie für Windows 10 und möglicherweise Windows 11 entwickelt, seine Kompatibilität mit anderen Versionen ist nicht gewährleistet.
  • Anwendung in der Praxis: Ideal für die Durchsetzung von Unternehmensrichtlinien für die Erstellung und Verwaltung von Benutzerkonten, insbesondere in größeren Unternehmen.
  • Skript vs. manuelle Steuerung: Bietet eine effizientere und weniger fehleranfällige Lösung im Vergleich zu manuellen Registrierungsbearbeitungen oder Gruppenrichtlinienanpassungen.
  • Wichtigkeit der Prüfung: Es ist unerlässlich, das Skript vor einer groß angelegten Implementierung in einer Staging-Umgebung zu testen, um unbeabsichtigte Folgen zu vermeiden.
  • Gleichgewicht zwischen Sicherheit und Benutzerfreundlichkeit: Es muss sichergestellt werden, dass die Sicherheitsmaßnahmen den Zugang und die Arbeitsabläufe der legitimen Benutzer:innen nicht behindern.
  • Integration mit Management-Tools: Kann effektiv in IT-Management-Lösungen wie NinjaOne integriert werden, um die Einsatz- und Überwachungsmöglichkeiten zu erweitern.

Vorwort

Die Benutzerkontenverwaltung unter Windows ist ein wichtiger Aspekt des IT-Managements, der sich direkt auf die Systemsicherheit und die Zugänglichkeit für Benutzer:innen auswirkt. Die Kontrolle der Erstellung neuer Benutzerkonten, insbesondere von Microsoft-Konten, ist eine wichtige Aufgabe für IT-Expert:innen und Managed Service Provider (MSPs). Ein PowerShell-Skript, das diesen Prozess automatisiert, erhöht nicht nur die Sicherheit, sondern spart auch Zeit und Ressourcen.

Kontext

Das bereitgestellte Skript ist ein PowerShell-basiertes Tool, mit dem die Erstellung von Microsoft-Konten auf Windows-Systemen aktiviert oder deaktiviert werden kann. Seine Bedeutung für die IT ergibt sich aus der Notwendigkeit, die Kontrolle über den Benutzerzugang in Unternehmensumgebungen zu behalten. Indem sie die Erstellung neuer Microsoft-Konten einschränken, können IT-Expert:innen unbefugten Zugriff verhindern, die Einhaltung von Unternehmensrichtlinien gewährleisten und eine sichere Computerumgebung aufrechterhalten.

Das Skript für die Benutzerkontenverwaltung unter Windows

#Requires -Version 5.1 -RunAsAdministrator

<#
.SYNOPSIS
    Block or Allow the ability to create Microsoft Accounts.
.DESCRIPTION
    Block or Allow the ability to create Microsoft Accounts.
.EXAMPLE
    PS C:\> Disable-MicrosoftAccountCreation.ps1
    Blocks creation of Microsoft Accounts.
PARAMETER: -Allow
    Allows creation of Microsoft Accounts.
.EXAMPLE
    PS C:\> Disable-MicrosoftAccountCreation.ps1
    Allows creation of Microsoft Accounts.
PARAMETER: -ForceReboot
    Blocks creation of Microsoft Accounts and reboot after 2 minutes.
.EXAMPLE
    PS C:\> Disable-MicrosoftAccountCreation.ps1 -ForceReboot
    Blocks creation of Microsoft Accounts and reboot after 2 minutes.
.INPUTS
    None
.OUTPUTS
    String[]
.NOTES
    Release Notes: Renamed Script, updated Set-ItemProp
    Only usable on Windows 10, possible Windows 11(UNTESTED/UNVERIFIED).
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 (
    [Parameter()]
    [switch]
    $Allow,
    [switch]
    $BlockLogin,
    [switch]
    $ForceReboot
)

begin {
    function Set-ItemProp {
        param (
            $Path,
            $Name,
            $Value,
            [ValidateSet("DWord", "QWord", "String", "ExpandedString", "Binary", "MultiString", "Unknown")]
            $PropertyType = "DWord"
        )
        if (-not $(Test-Path -Path $Path)) {
            # Check if path does not exist and create the path
            New-Item -Path $Path -Force | Out-Null
        }
        if ((Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue)) {
            # Update property and print out what it was changed from and changed to
            $CurrentValue = (Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue).$Name
            try {
                Set-ItemProperty -Path $Path -Name $Name -Value $Value -Force -Confirm:$false -ErrorAction Stop | Out-Null
            }
            catch {
                Write-Error "[Error] Unable to Set registry key for $Name please see below error!"
                Write-Error $_
                exit 1
            }
            Write-Host "$Path\$Name changed from $CurrentValue to $($(Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue).$Name)"
        }
        else {
            # Create property with value
            try {
                New-ItemProperty -Path $Path -Name $Name -Value $Value -PropertyType $PropertyType -Force -Confirm:$false -ErrorAction Stop | Out-Null
            }
            catch {
                Write-Error "[Error] Unable to Set registry key for $Name please see below error!"
                Write-Error $_
                exit 1
            }
            Write-Host "Set $Path\$Name to $($(Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue).$Name)"
        }
    }
    if ($env:allowCreation -like "Allow") {
        $Allow = $true
    }
    elseif ($env:allowCreation -like "Block Creation" -or $env:allowCreation -like "Block Creation And Login") {
        $Allow = $false
    }
    if ($env:forceReboot -like "true") {
        $ForceReboot = $true
    }
}
process {
    if ($Allow) {
        # Allow
        Set-ItemProp -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "NoConnectedUser" -Value 0
        Set-ItemProp -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\Settings\AllowYourAccount" -Name "value" -Value 1
        Remove-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\MicrosoftAccount" -Name "DisableUserAuth" -ErrorAction SilentlyContinue

        Write-Host "Allowing Microsoft accounts to be created."
    }
    else {
        # Block
        if ($env:allowCreation -like "Block Creation And Login" -or $BlockLogin) {
            # Block MS Account Creation and Login
            Set-ItemProp -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "NoConnectedUser" -Value 3
            Set-ItemProp -Path "HKLM:\Software\Policies\Microsoft\MicrosoftAccount" -Name "DisableUserAuth" -Value 1
        }
        else {
            # Block MS Account Creation
            Set-ItemProp -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "NoConnectedUser" -Value 1
        }
        Set-ItemProp -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\Settings\AllowYourAccount" -Name "value" -Value 0

        Write-Host "Blocking Microsoft accounts from being created."
    }

    if ($ForceReboot) {
        # Reboot
        shutdown.exe -r -t 60
    }
    else {
        # Do not reboot
        Write-Host "Please restart $([System.Net.Dns]::GetHostName())"
    }
}
end {
    
    
    
}

 

Greifen Sie auf über 300 Skripte im NinjaOne Dojo zu.

Zugang erhalten

Detaillierte Aufschlüsselung

Das Skript ändert bestimmte Registrierungsschlüssel, die das Erstellen und Verwenden von Microsoft-Konten in Windows 10 und möglicherweise auch in Windows 11 steuern. Die Parameter des Skripts, Allow, BlockLogin und ForceReboot, bieten Flexibilität bei der Implementierung, um verschiedenen administrativen Anforderungen gerecht zu werden.

  • Einrichtung der Umgebung: Das Skript beginnt mit der Definition der benutzerdefinierten Funktion Set-ItemProp zum Erstellen oder Ändern von Registrierungsschlüsseln und -werten.
  • Behandlung der Parameter: Es bewertet dann Umgebungsvariablen und Skriptparameter, um zu bestimmen, ob die Erstellung von Microsoft-Konten erlaubt oder blockiert werden soll.
  • Ausführungslogik: Anhand der angegebenen Parameter ändert das Skript die entsprechenden Registrierungsschlüssel. Wenn der Parameter Allow gesetzt ist, wird die Erstellung von Microsoft-Konten ermöglicht. Umgekehrt wird diese Funktion deaktiviert, wenn sie nicht gesetzt ist. Mit dem Parameter BlockLogin kann die Kontonutzung weiter eingeschränkt werden.
  • Systemreaktion: Abhängig vom Parameter ForceReboot kann das Skript einen Systemneustart veranlassen, damit die Änderungen sofort wirksam werden.

Mögliche Anwendungsfälle

Ein IT-Administrator in einem großen Unternehmen kann dieses Skript verwenden, um eine Richtlinie durchzusetzen, die Mitarbeiter:innen daran hindert, persönliche Microsoft-Konten auf Unternehmensgeräten zu verwenden. Dadurch wird sichergestellt, dass nur die vom Unternehmen verwaltete Konten verwendet werden, was die Sicherheit und die Compliance erhöht.

Vergleiche

Herkömmliche Methoden der Benutzerkontensteuerung beinhalten oft manuelle Änderungen der Registrierung oder Konfigurationen von Gruppenrichtlinien. Dieser PowerShell-Ansatz bietet eine rationalisierte und skriptfähige Lösung, die schnell und einheitlich über mehrere Systeme hinweg eingesetzt werden kann.

FAQs

  • Kann dieses Skript auf allen Windows-Versionen verwendet werden?
    • Das Skript ist für Windows 10 und möglicherweise Windows 11 konzipiert, aber die Kompatibilität mit anderen Versionen ist nicht garantiert.
  • Welche Auswirkungen hat dieses Skript auf bestehende Microsoft-Konten?
    • Das Skript wirkt sich nicht auf bestehende Konten aus, sondern steuert die Erstellung neuer Konten und, optional, deren Möglichkeit, sich anzumelden.

Folgen

Die Verwendung eines solchen Skripts kann die Sicherheitslage eines Unternehmens durch die Kontrolle des Benutzerzugangs erheblich verbessern. Es ist jedoch wichtig, ein Gleichgewicht zwischen Sicherheit und Benutzerfreundlichkeit zu finden, um dafür zu sorgen, dass legitime Benutzer:innen nicht behindert werden.

Empfehlungen

Testen Sie das Skript immer in einer Staging-Umgebung, bevor Sie es breit einsetzen. Achten Sie auf die Bedürfnisse der verschiedenen Benutzergruppen innerhalb des Unternehmens und passen Sie die Parameter des Skripts entsprechend an.

Abschließende Überlegungen

Durch die Integration dieses PowerShell-Skripts in eine umfassende IT-Managementlösung wie NinjaOne kann die Benutzerkontenverwaltung unter Windows optimiert werden. NinjaOne bietet Tools zur Bereitstellung, Überwachung und Verwaltung solcher Skripte in einer verteilten IT-Umgebung und gewährleistet so Konsistenz und Zuverlässigkeit bei administrativen Aufgaben.

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).