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