it-swarm.dev

Ejecutar automáticamente un script cuando inicio sesión en Windows

¿Cómo puedo ejecutar automáticamente un script cuando inicio sesión en Windows?

Me gustaría ejecutar algo así cada vez que inicio sesión en mi computadora:

echo %USERNAME% logged on at %DATE% %TIME% >> log.txt

Un bono sería poder ejecutar el mismo script siempre que desbloquee el protector de pantalla también.

27
Hallgrim

Puede crear una tarea programada que se ejecutará cuando su computadora esté desbloqueada:

  1. Inicio> Herramientas administrativas> Programador de tareas
  2. panel izquierdo: seleccione la biblioteca del Programador de tareas
  3. panel derecho: haga clic en Crear tarea ... (NOTA: esta es la única forma de obtener el disparador correcto)
  4. en el cuadro de diálogo Crear tarea:
    • Pestaña General - proporcione un nombre para su tarea
    • Pestaña Desencadenadores: haga clic en Nuevo ... y seleccione En desbloquear estación de trabajo
    • Pestaña Acción: haga clic en Nuevo ... y haga clic en Examinar ... para localizar su script
    • Pestaña Condiciones: desmarque Iniciar la tarea solo si la computadora tiene alimentación de CA

Además, he ajustado la ruta en el script para leer

echo %USERNAME% logged on at %DATE% %TIME% >> %USERPROFILE%\log.txt
18
Jeff

Si ya tienes un script:

Para asignar un script de inicio de sesión a un usuario o grupo

  • Abra la gerencia de la computadora.
  • En el árbol de la consola, haga clic en Usuarios.

¿Dónde? Herramientas del sistema/Usuarios y grupos locales/Usuarios

  • Haga doble clic en el usuario al que desea asignar una secuencia de comandos de inicio de sesión.
  • Haga clic en la pestaña Perfil.
  • En el campo Script de inicio de sesión, ingrese la ruta y el nombre del script de inicio de sesión que desea asignar a ese usuario, y luego haga clic en Aceptar.

Si no, aquí hay un práctico "HowTo" de Microsoft

Creando scripts de inicio de sesión

Puede usar los scripts de inicio de sesión para asignar tareas que se realizarán cuando un usuario inicie sesión en un equipo en particular. Los scripts pueden ejecutar comandos del sistema operativo, establecer variables de entorno del sistema y llamar a otros scripts o programas ejecutables. La familia de Windows Server 2003 admite dos entornos de secuencias de comandos: el procesador de comandos ejecuta archivos que contienen comandos de lenguaje por lotes y Windows Script Host (WSH) ejecuta archivos que contienen Microsoft Visual Basic Scripting Edition (VBScript) o comandos Jscript. Puede utilizar un editor de texto para crear secuencias de comandos de inicio de sesión. Algunas tareas comúnmente realizadas por los scripts de inicio de sesión incluyen:

  • Mapeo de unidades de red.
  • Instalación y configuración de la impresora predeterminada de un usuario.
  • Recopilación de información del sistema informático.
  • Actualización de firmas de virus.
  • Actualización de software.
  • La siguiente secuencia de comandos de inicio de sesión contiene comandos de VBScript que usan Active Directory
  • Interfaces de servicio (ADSI) para realizar tres tareas comunes basadas en la pertenencia a un grupo de usuarios:

Asigna la unidad H: al directorio de inicio del usuario llamando al método MapNetworkDrive del objeto de la red WSH en combinación con la propiedad UserName del objeto de la red WSH. Utiliza el objeto ADSI IADsADSystemInfo para obtener el nombre distinguido del usuario actual, que a su vez se usa para conectarse al objeto de usuario correspondiente en Active Directory. Una vez que se establece la conexión, la lista de grupos de los que el usuario es miembro se recupera utilizando el atributo memberOf del usuario. La lista multivalor de nombres de grupos se une en una sola cadena mediante el uso de la función Unir de VBScript para facilitar la búsqueda de nombres de grupos objetivo.

Si el usuario actual es miembro de uno de los tres grupos definidos en la parte superior de la secuencia de comandos, la secuencia de comandos asigna la unidad G: del usuario a la unidad compartida de grupo y configura la impresora predeterminada del usuario como impresora de grupo. Para crear un ejemplo de script de inicio de sesión

  • Abra el Bloc de notas.
  • Copie y pegue, o escriba, lo siguiente:

    Const ENGINEERING_GROUP     = "cn=engineering"
    Const FINANCE_GROUP         = "cn=finance"
    Const HUMAN_RESOURCES_GROUP = "cn=human resources"
    
    Set wshNetwork = CreateObject("WScript.Network")
    wshNetwork.MapNetworkDrive "h:",
    "\\FileServer\Users\" & wshNetwork.UserName
    
    Set ADSysInfo = CreateObject("ADSystemInfo")
    Set CurrentUser = GetObject("LDAP://" &
    ADSysInfo.UserName)
    strGroups = LCase(Join(CurrentUser.MemberOf))
    
    If InStr(strGroups, ENGINEERING_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Engineering\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\EngLaser"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\Plotter"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\EngLaser"
    
    ElseIf InStr(strGroups, FINANCE_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Finance\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\FinLaser"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\FinLaser"
    
    ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Human Resources\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\HrLaser"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\HrLaser"
    
    End If
    
  • En el menú Archivo, haga clic en Guardar como.

  • En Guardar en, haga clic en el directorio que corresponde a la carpeta compartida Netlogon del controlador de dominio (generalmente SystemRoot\SYSVOL\Sysvol\DomainName\Scripts donde DomainName es el nombre de dominio completo del dominio).
  • En Guardar como tipo, haga clic en Todos los archivos.
  • En Nombre de archivo, escriba un nombre de archivo, seguido de .vbs y luego haga clic en Guardar. WSH usa la extensión .vbs para identificar archivos que contienen comandos de VBScript.
22
Ivo Flipse

La forma más sencilla en que puedo pensar sería poner esto en un archivo .bat en su carpeta de inicio.

Una forma más complicada sería agregar el archivo por lotes al registro en el

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

clave de registro.

14
Bruce McLeod

¡No hay necesidad! Windows ya tiene un mecanismo para registrar esto para usted en el registro de eventos. El ID de evento es 4624 (528 en sistemas pre-Vista).

2

¿Alguien sabe si esto se puede usar para ejecutar cuando la pantalla también está bloqueada/desbloqueada?

Hay una manera para Windows 7 y/o Windows Server 2008.

Use el Programador de tareas, cree una nueva tarea básica, ya que el Desencadenador usa "Cuando inicio sesión".

2
Tomas Tintera

Un buen método alternativo es crear un archivo por lotes con los comandos que desea ejecutar en ellos. A continuación, especificará en el editor de políticas de la máquina que ejecuta un script de inicio de sesión como parte del proceso de inicio de sesión. Una nota rápida es que esta opción solo está disponible en XP Pro y no en la versión doméstica.

Tutorial del editor de políticas de grupo aquí

2
Axxmasterr