> ## Documentation Index
> Fetch the complete documentation index at: https://help.gorelo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Faire pivoter les mots de passe d'administrateur local

> Automatisez la rotation des mots de passe d'administrateur local dans Gorelo avec un script PowerShell qui crée le compte, définit un mot de passe sécurisé et le stocke dans un champ personnalisé.

Ce guide vous aide à configurer la rotation automatique des mots de passe d'administrateur local dans Gorelo. Le script crée un compte d'administrateur local (s'il n'existe pas), l'assigne au groupe Administrateurs locaux, définit un mot de passe aléatoire sécurisé et stocke ce mot de passe dans Gorelo pour une récupération facile.

<Steps>
  <Step title="Créer le champ personnalisé d'actif.">
    1. Allez à **Paramètres** > **Actifs** > **[Champs personnalisés](https://app.gorelo.io/admin/admin-settings#asset#assetcustomfields)**.
    2. Ajoutez un champ personnalisé avec les détails suivants :
       * **Nom** : Local Admin Password
       * **Variable** : localadminpassword
       * **Type** : Texte
       * Activez **Afficher dans le détail de l'actif** et **Valeur bleue**.
    3. Cliquez sur **Enregistrer**.
  </Step>

  <Step title="Créer le script.">
    1. Allez à **[Scripts](https://app.gorelo.io/asset/script-list)**.
    2. Créez un nouveau script avec les détails suivants :
       * **Nom** : 🔐 Set-LocalAdminPassword
       * **Plateforme** : Windows
       * **Contenu** : *\[Copiez le script PowerShell fourni ci-dessous]*
    3. Cliquez sur **Enregistrer**.

    ```powershell theme={null}
    # =========================================================================
    # Simple Local Admin Password Management Script for Gorelo RMM
    # =========================================================================

    # Configuration variables - change as needed
    $localAdminAccount = "localadmin"
    $accountFullName = "Local Administrator"
    $accountDescription = ""
    $hideFromLogonScreen = $true  # Set to $false to show the account on logon screen

    try {
        # Generate a strong random password
        $CharSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_=+[]{}|;:,.<>?"
        $Password = ""
        $Random = New-Object System.Random
        
        # Create a 16-character random password
        1..16 | ForEach-Object { $Password += $CharSet[$Random.Next(0, $CharSet.Length)] }
        
        # Check if the account exists
        $userExists = Get-LocalUser -Name $localAdminAccount -ErrorAction SilentlyContinue
        
        if (-not $userExists) {
            # Create the account if it doesn't exist
            $securePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
            New-LocalUser -Name $localAdminAccount -Password $securePassword -FullName $accountFullName -Description $accountDescription -AccountNeverExpires | Out-Null
            Add-LocalGroupMember -Group "Administrators" -Member $localAdminAccount
            Write-Output "Created local admin account: $localAdminAccount"
        } else {
            # Update password if account exists
            $securePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
            Set-LocalUser -Name $localAdminAccount -Password $securePassword -FullName $accountFullName -Description $accountDescription
            Write-Output "Updated password for: $localAdminAccount"
            
            # Check if user is already in Administrators group, add if not
            $adminGroup = Get-LocalGroupMember -Group "Administrators" -ErrorAction SilentlyContinue
            $isAdmin = $adminGroup | Where-Object { $_.Name -like "*\$localAdminAccount" -or $_.Name -eq $localAdminAccount }
            
            if (-not $isAdmin) {
                Add-LocalGroupMember -Group "Administrators" -Member $localAdminAccount
                Write-Output "Added $localAdminAccount to Administrators group"
            }
        }
        
        # Configure account visibility on logon screen
        if ($hideFromLogonScreen) {
            # Hide the account from logon screen
            $registryPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList"
            if (-not (Test-Path $registryPath)) {
                New-Item -Path $registryPath -Force | Out-Null
            }
            Set-ItemProperty -Path $registryPath -Name $localAdminAccount -Value 0 -Type DWORD -Force
            Write-Output "Account hidden from logon screen"
        } else {
            # Show the account on logon screen (by removing the registry entry if it exists)
            $registryPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList"
            if (Test-Path $registryPath) {
                if (Get-ItemProperty -Path $registryPath -Name $localAdminAccount -ErrorAction SilentlyContinue) {
                    Remove-ItemProperty -Path $registryPath -Name $localAdminAccount -Force
                }
            }
            Write-Output "Account visible on logon screen"
        }
        
        # Store the password in Gorelo RMM
        GoreloAction -SetCustomField -Name "asset.localadminpassword" -Value $Password
        Write-Output "Password stored in custom field"
        
    } catch {
        # Output error to console for on-demand runs
        Write-Error "Error managing local admin account: $_"
        exit 1
    }
    ```
  </Step>

  <Step title="Déployer le script via une politique.">
    1. Allez à **[Actifs](https://app.gorelo.io/asset/asset-list)**.
    2. Sélectionnez n'importe quel actif où le script s'est exécuté.
    3. Consultez la section **Champs personnalisés** pour voir le mot de passe d'administrateur local stocké.
    4. Cliquez sur l'icône de révélation pour afficher le mot de passe au besoin.
  </Step>
</Steps>

## Personnaliser le script

Le script comprend plusieurs variables au début que vous pouvez modifier :

* `$localAdminAccount` = "localadmin" # The username for the local admin account
* `$accountFullName` = "Local Administrator" # The full name for the account
* `$accountDescription` = "" # The account description (optional)
* `$hideFromLogonScreen` = `$true` # Set to `$false` to show the account on logon screen

Ajustez ces variables pour les adapter aux besoins de votre organisation avant de déployer le script.
