En esta entrada al blog veremos como generar un script que será capaz de crearnos un usuario local predefinido por el usuario y protegido por contraseña. También el script será capaz de deshabilitar el resto de usuarios locales y dejar solamente el que crea.
Published on December 18, 2022 by Marc Esteve Ejarque
powershell script windows dominio administrador sysadmin
2 min READ
En esta entrada al blog veremos como generar un script que será capaz de crearnos un usuario local predefinido por el usuario y protegido por contraseña. También será capaz de deshabilitar el resto de usuarios de la máquina para solamente dejar este usuario activo.
Este script se puede ejecutar mediante las políticas de Windows Server, si tenemos un entorno de dominio. De esa manera, todo equipo que metamos en dominio automáticamente se generará el usuario administrador local que nosotros hemos predefinido y deshabilitar el resto de usuarios por seguridad.
A continuación os dejo el codigo para que lo podais implementar o mejorar y el enlace al repositorio de Github:
$user=’Adminacc’ # Username that you want to create
$localuserpwd = ConvertTo-SecureString “MyPassword” -AsPlainText -Force # Password that you what to have the user
$logFile = “c:\%HOMEPATH%\Desktop\log.txt” # Log Path, if you don’to want logFile you can’t comment this line
Function Write-Log {
param(
[Parameter(Mandatory = $true)][string] $message,
[Parameter(Mandatory = $false)]
[ValidateSet(“INFO”,”WARN”,”ERROR”)]
[string] $level = “INFO”
)
# Create timestamp
$timestamp = (Get-Date).toString(“yyyy/MM/dd HH:mm:ss”)
# Append content to log file
Add-Content -Path $logFile -Value “$timestamp [$level] - $message”
}
Function CreateLocalUser {
process {
try {
# Create new user with default password and password never expires as policy
New-LocalUser -Name $user -Password $localuserpwd -FullName $user -PasswordNeverExpires -ErrorAction stop
Write-Log -message “$user local user created”
# Add new user to administrator group
Add-LocalGroupMember -Group Administradores -Member $user -ErrorAction stop
Write-Log -message “$user added to the local users group”
}catch{
Write-log -message “Creating local account failed” -level “ERROR”
}
}
}
Function Disable-LocalUsers {
process {
try {
# Disable all users exept our user local admin
Get-WmiObject -ComputerName $env:computername -Class Win32_UserAccount -Filter “LocalAccount=’True’ and Disabled=’False’ and Name!=’$user’”| Disable-LocalUser -ErrorAction stop
Write-Log -message “All users disabled”
}catch{
Write-log -message “Error disabling users” -level “ERROR”
}
}
}
if ( ! (Get-WmiObject -ComputerName $env:computername -Class Win32_UserAccount -Filter “Name=’$user’”)){
Write-Log -message “#########”
Write-Log -message “$env:COMPUTERNAME - Create local user account”
CreateLocalUser
Write-Log -message “#########”
Write-Log -message “$env:COMPUTERNAME - Disable All Localusers”
Disable-LocalUsers
}else{
Write-Log -message “#########”
Write-Log -message “$env:COMPUTERNAME - Disable All Localusers”
Disable-LocalUsers
}
}
Como siempre, muchas gracias por leerlo y compartirlo.
Recordad que podeis seguirme en mis redes sociales para ver mas información.
¡Hasta Pronto!