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

# Rotar contrasenyes d'administrador local

> Automatitzeu la rotació de contrasenyes d'administrador local a Gorelo amb un script de PowerShell que crea el compte, estableix una contrasenya segura i l'emmagatzema en un camp personalitzat.

Aquesta guia us ajuda a configurar la rotació automàtica de contrasenyes d'administrador local a Gorelo. L'script crea un compte d'administrador local (si no existeix), l'assigna al grup d'administradors locals, estableix una contrasenya aleatòria segura i emmagatzema aquesta contrasenya a Gorelo per a una recuperació fàcil.

<Steps>
  <Step title="Creeu el camp personalitzat d'actiu.">
    1. Aneu a **Configuració** > **Actius** > **[Camps personalitzats](https://app.gorelo.io/admin/admin-settings#asset#assetcustomfields).**
    2. Afegiu un camp personalitzat amb els detalls següents:
       * **Nom**: Local Admin Password
       * **Variable**: localadminpassword
       * **Tipus**: Text
       * Activeu **Mostra al detall de l'actiu** i **Valor blau**.
    3. Feu clic a **Desa.**
  </Step>

  <Step title="Creeu l'script.">
    1. Aneu a **[Scripts](https://app.gorelo.io/asset/script-list).**
    2. Creeu un nou script amb els detalls següents:
       * **Nom**: 🔐 Set-LocalAdminPassword
       * **Plataforma**: Windows
       * **Contingut**: *\[Copieu l'script de PowerShell proporcionat a continuació]*
    3. Feu clic a **Desa.**

    ```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="Desplegueu l'script via una política.">
    1. Aneu a **[Actius](https://app.gorelo.io/asset/asset-list).**
    2. Seleccioneu qualsevol actiu on s'hagi executat l'script.
    3. Visualitzeu la secció **Camps personalitzats** per veure la contrasenya d'administrador local emmagatzemada.
    4. Feu clic a la icona de revelar per mostrar la contrasenya quan calgui.
  </Step>
</Steps>

## Personalitzar l'script

L'script inclou diverses variables a la part superior que podeu modificar:

* `$localAdminAccount` = "localadmin" # El nom d'usuari per al compte d'administrador local
* `$accountFullName` = "Local Administrator" # El nom complet per al compte
* `$accountDescription` = "" # La descripció del compte (opcional)
* `$hideFromLogonScreen` = `$true` # Establiu-lo a `$false` per mostrar el compte a la pantalla d'inici de sessió

Ajusteu aquestes variables a les necessitats de la vostra organització abans de desplegar l'script.
