Principaux éléments :
- Contrôle automatisé: Le script automatise le processus d’activation ou de désactivation de la création de comptes Microsoft, améliorant ainsi l’efficacité de la gestion des comptes utilisateurs Windows.
- Renforcement de la sécurité : En contrôlant la création des comptes, le script améliore considérablement la sécurité des environnements Windows.
- Flexibilité des paramètres: Offre une personnalisation grâce à des paramètres tels que Allow, BlockLogin et ForceReboot, s’adaptant aux différentes exigences administratives.
- Modification de la clé de registre: Il agit en modifiant des clés de registre spécifiques qui régissent les politiques de création et d’utilisation des comptes.
- Considérations relatives à la compatibilité: Principalement conçu pour Windows 10 et potentiellement Windows 11, sa compatibilité avec les autres versions n’est pas assurée.
- Application dans le monde réel: Idéal pour appliquer les politiques de l’entreprise en matière de création et de gestion des comptes d’utilisateurs, en particulier dans les grandes entreprises.
- Contrôle par script ou manuel: Il offre une solution plus efficace et moins sujette aux erreurs que les modifications manuelles du registre ou les ajustements de la stratégie de groupe.
- Importance des tests: Il est essentiel de tester le script dans un environnement contrôlé avant de l’implémenter à grande échelle afin d’éviter des conséquences imprévues.
- Équilibrer la sécurité et la facilité d’utilisation: Il est essentiel de veiller à ce que les mesures de sécurité n’entravent pas l’accès et le travail des utilisateurs légitimes.
- Intégration avec les outils de gestion: Peut être efficacement intégré à des solutions de gestion informatique telles que NinjaOne pour améliorer les capacités de déploiement et de surveillance.
Introduction
La gestion des comptes utilisateurs Windows est un aspect essentiel de l’administration informatique, car elle a un impact direct sur la sécurité des systèmes et l’accessibilité des utilisateurs. Le contrôle de la création de nouveaux comptes utilisateurs, en particulier de comptes Microsoft, est une tâche essentielle pour les professionnels de l’informatique et les fournisseurs de services gérés (MSP). Un script PowerShell qui automatise ce processus permet non seulement de renforcer la sécurité, mais aussi de gagner du temps et d’économiser des ressources.
Contexte
Le script fourni est un outil basé sur PowerShell conçu pour activer ou désactiver la création de comptes Microsoft sur les systèmes Windows. Son importance dans le domaine de l’informatique découle de la nécessité de maintenir le contrôle de l’accès des utilisateurs dans les environnements d’entreprise. En limitant la création de nouveaux comptes Microsoft, les professionnels de l’informatique peuvent empêcher les accès non autorisés, garantir le respect des politiques de l’entreprise et maintenir un environnement informatique sécurisé.
Le script :
#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 { }
Accédez à plus de 700 scripts dans le Dojo NinjaOne
Description détaillée
Le script fonctionne en modifiant des clés de registre spécifiques qui contrôlent la capacité de créer et d’utiliser des comptes Microsoft dans Windows 10 et potentiellement Windows 11. Les paramètres du script (Allow, BlockLogin, ForceReboot) offrent une grande flexibilité d’implémentation et permettent de répondre à divers besoins administratifs.
- Configuration de l’environnement: Le script commence par définir une fonction personnalisée Set-ItemProp pour créer ou modifier des clés et des valeurs de registre.
- Traitement des paramètres: Il évalue ensuite les variables de l’environnement et les paramètres du script pour déterminer l’action à entreprendre (autoriser ou bloquer la création de comptes Microsoft).
- Logique d’exécution: En fonction des paramètres fournis, le script modifie les clés de registre concernées. Si le commutateur Allow est activé, il permet la création de comptes Microsoft. Inversement, s’il n’est pas défini, il désactive cette fonction. Le paramètre BlockLogin permet de restreindre davantage l’utilisation du compte.
- Réponse du système: En fonction du paramètre ForceReboot, le script peut lancer un redémarrage du système pour s’assurer que les modifications prennent effet immédiatement.
Cas d’utilisation potentiels
L’administrateur informatique d’une grande entreprise peut utiliser ce script pour appliquer une politique qui empêche les employés d’utiliser des comptes Microsoft personnels sur les appareils de l’entreprise. Cela garantit que seuls les comptes gérés par l’entreprise sont utilisés, ce qui renforce la sécurité et la conformité.
Comparaisons
Les méthodes traditionnelles de contrôle des comptes utilisateurs impliquent souvent des modifications manuelles du registre ou des configurations de stratégie de groupe. Le script offre une solution plus simple, optimale et scriptable qui peut être déployée rapidement et uniformément dans plusieurs systèmes.
FAQ
- Ce script peut-il être utilisé sur toutes les versions de Windows ?
- Le script est conçu pour Windows 10 et éventuellement Windows 11, mais la compatibilité avec d’autres versions n’est pas garantie.
- Comment ce script affecte-t-il les comptes Microsoft existants ?
- Le script n’a pas d’impact sur les comptes existants mais contrôle la création de nouveaux comptes et, éventuellement, leur capacité à se connecter.
Implications
L’utilisation d’un tel script peut améliorer de manière significative la posture de sécurité d’une entreprise en contrôlant l’accès des utilisateurs. Toutefois, il est essentiel de trouver un équilibre entre la sécurité et la convivialité, en veillant à ce que les utilisateurs légitimes ne soient pas gênés.
Recommandations
Testez toujours le script dans un environnement contrôlé avant de le déployer à grande échelle. Tenez compte des besoins des différents groupes d’utilisateurs au sein de l’entreprise et adaptez les paramètres du script en conséquence.
Conclusion :
L’intégration de ce script PowerShell dans une solution de gestion informatique complète telle que NinjaOne permet de simplifier et optimiser la gestion des comptes utilisateurs. NinjaOne fournit les outils nécessaires au déploiement, à la surveillance et à la gestion de ces scripts dans un environnement informatique distribué, garantissant ainsi la cohérence et la fiabilité des tâches administratives.