Cómo desactivar una cuenta local en Windows con PowerShell

Los profesionales de TI y los proveedores de servicios gestionados (MSP) lo saben bien: a veces es necesario desactivar una cuenta local en un equipo Windows por motivos de seguridad, cumplimiento de normativas u otras razones operativas. Obviamente existen herramientas GUI integradas para ello, pero cuando se gestionan varios sistemas, la automatización es clave. Hoy nos adentraremos en un script de PowerShell diseñado para automatizar esta tarea, haciéndola más rápida, segura y fácilmente reproducible.

El script permite desactivar una cuenta local en Windows a través de PowerShell. Este script PowerShell se dirige específicamente a aquellos que buscan cómo deshabilitar un usuario del sistema operativo Windows a través de PowerShell o aquellos que se preguntan cómo desactivar una cuenta local en Windows. Así que, sin más preámbulos, veamos este script en detalle.

El script

#Requires -Version 5.1

<#
.SYNOPSIS
    Disable a local account
.DESCRIPTION
    Disable a local account
.EXAMPLE
     -UserName "AdminTest"
    Disables the account AdminTest
.EXAMPLE
    PS C:> Disable-LocalAdminAccount.ps1 -UserName "Administrator"
    Disables the account AdminTest
.OUTPUTS
    None
    String[]
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes:
    Initial Release
    (c) 2023 NinjaOne
    By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
.COMPONENT
    LocalBuiltInAccountManagement
#>

[CmdletBinding()]
param (
    # User name of a local account
    [Parameter(Mandatory = $true)]
    [String]
    $UserName
)

begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
        { Write-Output $true }
        else
        { Write-Output $false }
    }
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }
    if ($(Get-Command -Name "Disable-LocalUser" -ErrorAction SilentlyContinue)) {
        # Disables $UserName using Disable-LocalUser
        try {
            Disable-LocalUser $UserName -Confirm:$false
        }
        catch {
            Write-Error $_
            exit 1
        }
    }
    else {
        # Disables $UserName using net.exe
        net.exe user $UserName /active:no
        if ($LASTEXITCODE -gt 0) {
            exit 1
        }
    }
}
end {}

 

Accede a más de 300 scripts en el Dojo de NinjaOne

Obtén acceso

Entender el guión para desactivar una cuenta local

He aquí un breve resumen:

  • el script comienza comprobando si se está ejecutando con privilegios administrativos. Si no, se detiene y lanza un mensaje de error.
  • Comprueba la presencia del comando incorporado Disable-LocalUser y, si existe, lo utiliza. En caso contrario, recurre al comando net.exe user para desactivar una cuenta local de un usuario.

El script obliga a rellenar la variable $UserName. Esta es la cuenta local que quieres desactivar.

Requisitos previos

  • Requisitos del sistema operativo: la arquitectura mínima de sistema operativo compatible incluye Windows 10 y Windows Server 2016.
  • Versión de PowerShell: requiere al menos PowerShell 5.1.

Copia de seguridad y restauración: procede con cautela

Antes de ejecutar cualquier script PowerShell que modifique la configuración del sistema, es fundamental realizar una copia de seguridad de la configuración existente o, mejor aún, de todo el sistema. Esto garantiza que puedas volver al estado anterior en caso de que algo vaya mal. Aquí tienes un par de métodos de copia de seguridad que puedes utilizar:

Punto de restauración del sistema

Crear un punto de restauración del sistema es una forma fácil y eficaz de hacer una copia de seguridad de tu configuración actual. Así es como se hace:

  • Abre el menú Inicio y busca «Crear un punto de restauración»
  • Haz clic en el resultado correspondiente para abrir la ventana Propiedades del sistema.
  • Ve a la pestaña «Protección del sistema» y haz clic en «Crear»
  • Dale un nombre a tu punto de restauración y guárdalo.

Cómo realizar una copia de seguridad completa del sistema

Para una copia de seguridad completa, puedes crear una imagen del sistema:

  • Abre el Panel de control.
  • Ve a «Sistema y seguridad» > «Copia de seguridad y restauración (Windows 7)»
  • En el panel izquierdo, haz clic en «Crear una imagen del sistema»
  • Sigue las instrucciones del asistente para completar la copia de seguridad.

Nota: prueba siempre el proceso de restauración para asegurarte de que la copia de seguridad es válida.

Gestión de errores: qué hacer cuando las cosas van mal

El script PowerShell para desactivar una cuenta local incluye una gestión básica de errores, pero como con cualquier script, pueden ocurrir. A continuación compartimos algunos errores comunes y consejos para solucionarlos:

«Acceso denegado. Por favor, ejecuta con privilegios de administrador».

Este error se produce si intentas ejecutar el script sin derechos administrativos. Asegúrate de hacer clic con el botón derecho en la ventana de PowerShell y elegir «Ejecutar como administrador»

La cuenta de usuario no existe

Si introduces un nombre de usuario que no existe, el script para desactivar una cuenta local arrojará un error. Vuelve a comprobar el nombre de usuario e inténtalo de nuevo.

El script no se ejecuta

Si el script no se ejecuta, comprueba la configuración de la política de ejecución de PowerShell. Es posible que tengas que cambiar la política para permitir que se ejecute el script. Utiliza el siguiente comando para cambiarlo:

Set-ExecutionPolicy RemoteSigned

Acuérdate de restablecer la configuración original después de ejecutar el script.

Tratamiento de errores de tipo Catch-All

Si quieres ampliar el alcance del script para registrar los errores en un archivo de texto con fines de auditoría, puedes modificar el bloque catch del script de la siguiente manera:

catch { Write-Error $_ «Error: $_» | Out-File «C:pathtoerrorlog.txt» -Append exit 1 }

Nota: sustituye «C:pathtoerrorlog.txt» por la ruta del archivo de registro que desees.

Al incorporar estos métodos de copia de seguridad y gestión de errores, se añade una capa adicional de seguridad y fiabilidad en el momento de ejecutar el script.

¿Por qué es útil?

Para los profesionales de TI:

  • Seguridad: si gestionas la infraestructura informática de una organización, saber cómo desactivar una cuenta local en Windows es crucial, ya que las cuentas no autorizadas o redundantes son un riesgo para la seguridad.
  • Conformidad: el cumplimiento de la normativa exige a menudo desactivar determinadas cuentas. La automatización de este proceso garantiza que no se omita ningún paso.
  • Automatización y escalabilidad: el script puede incluirse como parte de una secuencia de automatización más amplia, lo que facilita la desactivación de cuentas en muchos equipos simultáneamente.

Para los MSP:

  • Multi-Tenancy: los MSP pueden integrar fácilmente este script en sus sistemas de gestión centralizada. Esto simplifica la gestión de varios clientes desde un único panel de control.
  • Eficiencia operativa: la capacidad de automatización de este script PowerShell reduce la sobrecarga operativa.
  • SLA y satisfacción del cliente: La automatización garantiza tiempos de respuesta más rápidos y el cumplimiento de los SLA, lo que se traduce directamente en la satisfacción del cliente.

Reflexiones finales

Cuando se trata de administrar cuentas locales, el script Disable-LocalAdminAccount.ps1 es una poderosa herramienta que debes tener en tu arsenal. Aprovecha el poder de la automatización y mejora tus medidas de seguridad integrando este script en tus flujos de trabajo. Al fin y al cabo, en el acelerado panorama informático actual, la automatización ya no es un lujo, sino una necesidad.

Próximos pasos

La creación de un equipo de TI próspero y eficaz requiere contar con una solución centralizada que se convierta en tu principal herramienta de prestación de servicios. NinjaOne permite a los equipos de TI supervisar, gestionar, proteger y dar soporte a todos sus dispositivos, estén donde estén, sin necesidad de complejas infraestructuras locales.

Obtén más información sobre NinjaOne Endpoint Management, echa un vistazo a un tour en vivoo tu prueba gratuita de la plataforma NinjaOne.

Categorías:

Quizá también te interese…

Ver demo×
×

¡Vean a NinjaOne en acción!

Al enviar este formulario, acepto la política de privacidad de NinjaOne.

Términos y condiciones de NinjaOne

Al hacer clic en el botón «Acepto» que aparece a continuación, estás aceptando los siguientes términos legales, así como nuestras Condiciones de uso:

  • Derechos de propiedad: NinjaOne posee y seguirá poseyendo todos los derechos, títulos e intereses sobre el script (incluidos los derechos de autor). NinjaOne concede al usuario una licencia limitada para utilizar el script de acuerdo con estos términos legales.
  • Limitación de uso: solo podrás utilizar el script para tus legítimos fines personales o comerciales internos, y no podrás compartirlo con terceros.
  • Prohibición de republicación: bajo ninguna circunstancia está permitido volver a publicar el script en ninguna biblioteca de scripts que pertenezca o esté bajo el control de cualquier otro proveedor de software.
  • Exclusión de garantía: el script se proporciona «tal cual» y «según disponibilidad», sin garantía de ningún tipo. NinjaOne no promete ni garantiza que el script esté libre de defectos o que satisfaga las necesidades o expectativas específicas del usuario.
  • Asunción de riesgos: el uso que el usuario haga del script corre por su cuenta y riesgo. El usuario reconoce que existen ciertos riesgos inherentes al uso del script, y entiende y asume cada uno de esos riesgos.
  • Renuncia y exención: el usuario no hará responsable a NinjaOne de cualquier consecuencia adversa o no deseada que resulte del uso del script y renuncia a cualquier derecho o recurso legal o equitativo que pueda tener contra NinjaOne en relación con su uso del script.
  • CLUF: si el usuario es cliente de NinjaOne, su uso del script está sujeto al Contrato de Licencia para el Usuario Final (CLUF).