Saltar al contingut principal
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.
1

Creeu el camp personalitzat d'actiu.

  1. Aneu a Configuració > Actius > Camps personalitzats.
  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.
2

Creeu l'script.

  1. Aneu a Scripts.
  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.
# =========================================================================
# 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
}
3

Desplegueu l'script via una política.

  1. Aneu a Actius.
  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.

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.