Maîtriser la gestion des comptes utilisateurs Windows avec PowerShell

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

Obtenir l’accès

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.

Pour aller plus loin

Pour créer une équipe informatique efficace et performante, il est essentiel d'avoir une solution centralisée qui joue le rôle de nœud principal pour vos services. NinjaOne permet aux équipes informatiques de surveiller, gérer, sécuriser et prendre en charge tous les appareils, où qu'ils soient, sans avoir besoin d'une infrastructure complexe sur site. Pour en savoir plus sur NinjaOne Endpoint Management, participez à une visite guidée, ou profitez d'un essai gratuit de la plateforme NinjaOne.

Catégories :

Vous pourriez aussi aimer

×

Voir NinjaOne en action !

En soumettant ce formulaire, j'accepte la politique de confidentialité de NinjaOne.

Termes et conditions NinjaOne

En cliquant sur le bouton “J’accepte” ci-dessous, vous indiquez que vous acceptez les termes juridiques suivants ainsi que nos conditions d’utilisation:

  • Droits de propriété: NinjaOne possède et continuera de posséder tous les droits, titres et intérêts relatifs au script (y compris les droits d’auteur). NinjaOne vous accorde une licence limitée pour l’utilisation du script conformément à ces conditions légales.
  • Limitation de l’utilisation: Les scripts ne peuvent être utilisés qu’à des fins personnelles ou professionnelles internes légitimes et ne peuvent être partagés avec d’autres entités.
  • Interdiction de publication: Vous n’êtes en aucun cas autorisé à publier le script dans une bibliothèque de scripts appartenant à, ou sous le contrôle d’un autre fournisseur de logiciels.
  • Clause de non-responsabilité: Le texte est fourni “tel quel” et “tel que disponible”, sans garantie d’aucune sorte. NinjaOne ne promet ni ne garantit que le script sera exempt de défauts ou qu’il répondra à vos besoins ou attentes particulières.
  • Acceptation des risques: L’utilisation du script est sous votre propre responsabilité. Vous reconnaissez qu’il existe certains risques inhérents à l’utilisation du script, et vous comprenez et assumez chacun de ces risques.
  • Renonciation et exonération de responsabilité: Vous ne tiendrez pas NinjaOne pour responsable des conséquences négatives ou involontaires résultant de votre utilisation du script, et vous renoncez à tout droit ou recours légal ou équitable que vous pourriez avoir contre NinjaOne en rapport avec votre utilisation du script.
  • EULA: Si vous êtes un client de NinjaOne, votre utilisation du script est soumise au contrat de licence d’utilisateur final qui vous est applicable (End User License Agreement (EULA)).