Esegui automaticamente uno script quando accedo a Windows


27

Come posso eseguire automaticamente uno script quando accedo a Windows?

Vorrei eseguire qualcosa del genere ogni volta che accedo al mio computer:

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

Un vantaggio sarebbe quello di poter eseguire lo stesso script ogni volta che sblocco anche lo screen saver.


la risposta accettata è un ottano molto alto - usando il tuo one-liner, offro qualcosa di più umile (ma efficace) di seguito ... ;-)
Jeff

Risposte:


19

È possibile creare un'attività pianificata che verrà eseguita quando il computer è sbloccato:

  1. Start> Strumenti di amministrazione> Utilità di pianificazione
  2. riquadro sinistro: selezionare Libreria Utilità di pianificazione
  3. riquadro destro: fare clic su Crea attività ... (NOTA: questo è l'unico modo per ottenere il trigger corretto)
  4. nella finestra di dialogo Crea attività:
    • Scheda Generale: fornisce un nome per l'attività
    • Scheda Trigger: fai clic su Nuovo ... e seleziona Sblocco workstation
    • Scheda Azione: fai clic su Nuovo ... e fai clic su Sfoglia ... per individuare lo script
    • Scheda Condizioni: deselezionare Avvia l'attività solo se il computer è alimentato a corrente alternata

Inoltre, ho modificato il percorso della sceneggiatura da leggere

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

22

Se hai già uno script:

Per assegnare uno script di accesso a un utente o gruppo

  • Apri Gestione computer.
  • Nella struttura della console, fare clic su Utenti.

Dove? Strumenti di sistema / Utenti e gruppi locali / Utenti

  • Fare doppio clic sull'utente a cui si desidera assegnare uno script di accesso.
  • Fai clic sulla scheda Profilo.
  • Nel campo Script di accesso, immettere il percorso e il nome dello script di accesso che si desidera assegnare a quell'utente, quindi fare clic su OK.

Altrimenti ecco un pratico "HowTo" di Microsoft

Creazione di script di accesso

È possibile utilizzare gli script di accesso per assegnare attività che verranno eseguite quando un utente accede a un determinato computer. Gli script possono eseguire comandi del sistema operativo, impostare variabili di ambiente di sistema e chiamare altri script o programmi eseguibili. La famiglia Windows Server 2003 supporta due ambienti di scripting: il processore dei comandi esegue file contenenti comandi in linguaggio batch e Windows Script Host (WSH) esegue file contenenti Microsoft Visual Basic Scripting Edition (VBScript) o comandi Jscript. È possibile utilizzare un editor di testo per creare script di accesso. Alcune attività comunemente eseguite dagli script di accesso includono:

  • Mappatura delle unità di rete.
  • Installazione e impostazione della stampante predefinita di un utente.
  • Raccolta di informazioni sul sistema informatico.
  • Aggiornamento delle firme dei virus.
  • Aggiornamento del software.
  • Il seguente script di accesso di esempio contiene comandi VBScript che utilizzano Active Directory
  • Service Interfaces (ADSI) per eseguire tre attività comuni in base all'appartenenza al gruppo di un utente:

Associa l'unità H: all'home directory dell'utente chiamando il metodo MapNetworkDrive dell'oggetto WSH Network in combinazione con la proprietà UserName dell'oggetto WSH Network. Utilizza l'oggetto ADAD IADsADSystemInfo per ottenere il nome distinto dell'utente corrente, che a sua volta viene utilizzato per connettersi all'oggetto utente corrispondente in Active Directory. Una volta stabilita la connessione, viene recuperato l'elenco dei gruppi di cui l'utente è membro utilizzando l'attributo memberOf dell'utente. L'elenco a più valori di nomi di gruppi viene unito in una singola stringa utilizzando la funzione Unisci di VBScript per facilitare la ricerca dei nomi dei gruppi di destinazione.

Se l'utente corrente è membro di uno dei tre gruppi definiti nella parte superiore dello script, lo script mappa l'unità G: dell'utente sull'unità condivisa di gruppo e imposta la stampante predefinita dell'utente come stampante di gruppo. Per creare uno script di accesso di esempio

  • Apri Blocco note.
  • Copia e incolla o digita quanto segue:

    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
    
  • Nel menu file, fare clic su Salva con nome.

  • In Salva in, fare clic sulla directory corrispondente alla cartella condivisa Netlogon del controller di dominio (in genere SystemRoot \ SYSVOL \ Sysvol \ DomainName \ Scripts dove DomainName è il nome di dominio completo del dominio).
  • In Salva come tipo, fai clic su Tutti i file.
  • In Nome file digitare un nome file, seguito da .vbs e quindi fare clic su Salva. WSH utilizza l'estensione .vbs per identificare i file che contengono comandi VBScript.

Sempre bello vedere che a qualcuno è piaciuta la risposta MrGreen
Ivo Flipse

Voglio quasi girare questo CW e taggarlo faq :)
Quack Quixote

Sii mio ospite @ quack ;-) FAQ per cosa in realtà?
Ivo Flipse,

14

Il modo più semplice a cui riesco a pensare sarebbe quello di metterlo in un file .bat nella cartella di avvio.

Un modo più complicato sarebbe quello di aggiungere il file batch al registro nel file

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

chiave di registro.


8
Se si desidera eseguirlo quando un utente accede, è necessario inserirlo nella cartella di avvio di Tutti gli utenti ( % allusersprofile% / Menu Start \ Programmi \ Avvio ) oppure effettuare una voce nella sezione Esegui del registro di LocalMachine: HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run )
Treb,

Eseguo un .exe in questo modo, ma c'è un modo per farlo tranquillamente? Senza aprire e tenere aperto un cmd?
bzupnick,

2

Un buon metodo alternativo è quello di creare un file batch con i comandi che si desidera eseguire in essi. Successivamente si specifica nell'editor delle politiche sulla macchina che esegue uno script di accesso come parte del processo di accesso. Una breve nota è che questa opzione è disponibile solo su XP Pro e non sulla versione home.

Tutorial dell'editor dei criteri di gruppo qui


2

Qualcuno sa se questo può essere usato per funzionare anche quando lo schermo è bloccato / sbloccato?

C'è un modo per Windows 7 e / o Windows Server 2008.

Utilizzare l'Utilità di pianificazione, creare una nuova attività di base, poiché il trigger utilizza "All'accesso".


Non è possibile utilizzare un'attività di base se si desidera che il trigger sia "Sblocco workstation"
Jeff

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.