Al lavoro mi trovo a dover aggiungere un account locale amministratore in ogni computer, di una società che è stata acquisita, che ne risulta privo. Farlo manualmente diventa lungo e complesso, ripeterlo decine di volte diventa pesante, così ricorro a uno script PowerShell e al cmdlet New-LocalUser.
Creazione con richiesta password
Questi comandi permettono la creazione dell’utente Zane, nel gruppo Administrators e di inserire la password nel momento in cui lanciamo lo script.
$Password = Read-Host -AsSecureString "Inserisci la password del nuovo utente"
New-LocalUser -Name "Zane" -Password $Password -FullName "Zane di TurboLab.it" -Description "Amministratore ad honorem"
Add-LocalGroupMember -Group "Administrators" -Member "Zane"
Verifica creazione utenza
Per verificare che l’utente è stato effettivamente creato si possono usare questi due comandi: Get-LocalGroupMember -Group "Administrators"
che filtra gli utenti del Gruppo Administrators, potete cambiarlo e mettere qualsiasi gruppo abbiate utilizzato, mentre Get-LocalUser
mostra tutti gli utenti presenti.
Opzioni cmdlet
Ci sono molte opzioni che ci permettono di configurare subito l’account
-Name
: Nome dell’account, lunghezza massima venti caratteri.-Password
: La password dell’account.-Description
: Descrizione dell’account (opzionale).-AccountExpires
: Data di scadenza dell’account, serve se si vuole rendere amministratore qualcuno solo per un certo periodo o se uno stagista deve usare quel computer per un mese.-AccountNeverExpires
: L’account non scade mai.-Disabled
: L’account creato risulta disabilitato.-FullName
: Nome completo dell'account visualizzato.-PasswordNeverExpires
: La password impostata non scade mai.-UserMayNotChangePassword
: L’utente non può cambiare la password.
Creazione utenza con password inclusa
Se non abbiamo voglia di digitare ogni volta la password, possiamo già inserirla nello script usando una variabile $Password e la password la scriviamo tra le virgolette:
$Password = ConvertTo-SecureString "Turb0L4b.it456" -AsPlainText -Force
New-LocalUser -Name "Zane" -Password $Password -FullName "Zane TurboLab.it"
Add-LocalGroupMember -Group "Administrators" -Member "Zane"
Get-LocalGroupMember -Group "Administrators"
Non è indispensabile questa riga è solo per verificare che l'utente creato sia presente.
Account con scadenza
Se abbiamo bisogno di creare un account temporaneo, che sia valido solo per un certo numero di giorni, possiamo inserire la data di scadenza con l’opzione -AccountExpires:
New-LocalUser -Name "Paperoga" -AccountExpires (Get-Date).AddDays(30)
Mentre Set-LocalUser -Name "Zane" -AccountExpires (Get-Date).AddDays(30)
permette di cambiare la durata di un utente già esistente.
Creazione account multipli
Se dobbiamo creare più account nello stesso computer, con durata trenta giorni, nel gruppo Users (utenze senza permessi amministrativi) possiamo usare questo script:
$Users = @(
@{Name="Pippo"; FullName="Pippo"; Password="P@ssw0rd1"},
@{Name="Pluto"; FullName="Pluto"; Password="P@ssw0rd2"},
@{Name="Topolino"; FullName="Topolino"; Password="P@ssw0rd3"}
)
foreach ($User in $Users) {
$Password = ConvertTo-SecureString $User.Password -AsPlainText -Force
New-LocalUser -Name $User.Name -Password $Password -FullName $User.FullName -Description "Utenze normali a scadenza" -AccountExpires (Get-Date).AddDays(30)
Add-LocalGroupMember -Group "Users" -Member $User.Name
}
Per verificare che le utenze siano state create filtriamo gli utenti del gruppo Users:
Get-LocalGroupMember -Group "Users"
Mentre se vogliamo sapere tutte le caratteristiche di un singolo utente si utilizza questo comando:
Get-LocalUser -Name pippo | select *
Script finale
Raccogliendo i comandi, e le opzioni, visti in precedenza, lo script finale, che mi serve per creare una utenza amministratore locale senza scadenza, con password sempre valida e che non può essere cambiata, è questo:
$NewUserSplat = @{
Name = "Zane"
Password = ConvertTo-SecureString "1nerisc1LaP@assw0rd!" -AsPlainText -Force
FullName = $AccountFullName = "Zane TurboLab.it"
Description = $AccountDescription = "Account Amministratore"
AccountNeverExpires = $true
PasswordNeverExpires = $true
UserMayNotChangePassword = $true
}
New-LocalUser @NewUserSplat
Add-LocalGroupMember -Group "Administrators" -Member "Zane"
Riprendiamo un commando visto in precedenza per vedere le caratteristiche dell’utente Zane:
Get-LocalUser -Name Zane | select *