Automatisch ein Skript ausführen, wenn ich mich bei Windows anmelde

27

Wie kann ich ein Skript automatisch ausführen, wenn ich mich bei Windows anmelde?

Ich möchte so etwas ausführen, wenn ich mich bei meinem Computer anmelde:

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

Ein Bonus wäre, das gleiche Skript ausführen zu können, wenn ich den Bildschirmschoner ebenfalls entsperre.

Hallgrim
quelle
Die Antwort lautet: sehr hohe Oktanzahl - mit Ihrem Einzeiler biete ich unten etwas Bescheideneres (aber wirksameres) an ... ;-)
Jeff

Antworten:

19

Sie können eine geplante Aufgabe erstellen, die ausgeführt wird, wenn Ihr Computer entsperrt wird:

  1. Start> Verwaltung> Taskplaner
  2. linker Bereich: Wählen Sie Taskplaner-Bibliothek
  3. Rechter Bereich: Klicken Sie auf Aufgabe erstellen ... (HINWEIS: Nur so erhalten Sie den richtigen Auslöser.)
  4. im Dialogfeld "Aufgabe erstellen":
    • Registerkarte "Allgemein" - Geben Sie einen Namen für Ihre Aufgabe ein
    • Registerkarte "Auslöser" - Klicken Sie auf "Neu" und wählen Sie "Beim Entsperren der Arbeitsstation"
    • Registerkarte "Aktion" - Klicken Sie auf "Neu" und dann auf "Durchsuchen", um Ihr Skript zu suchen
    • Registerkarte "Bedingungen" - Deaktivieren Sie "Task nur starten", wenn der Computer mit Strom versorgt wird

Außerdem habe ich den Pfad im Skript zum Lesen optimiert

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

Wenn Sie bereits ein Skript haben:

So weisen Sie einem Benutzer oder einer Gruppe ein Anmeldeskript zu

  • Öffnen Sie die Computerverwaltung.
  • Klicken Sie in der Konsolenstruktur auf Benutzer.

Woher? Systemprogramme / Lokale Benutzer und Gruppen / Benutzer

  • Doppelklicken Sie auf den Benutzer, dem Sie ein Anmeldeskript zuweisen möchten.
  • Klicken Sie auf die Registerkarte Profil.
  • Geben Sie im Feld Anmeldeskript den Pfad und den Namen des Anmeldeskripts ein, das Sie diesem Benutzer zuweisen möchten, und klicken Sie dann auf OK.

Andernfalls finden Sie hier ein praktisches "HowTo" von Microsoft

Anmeldeskripte erstellen

Mithilfe von Anmeldeskripts können Sie Aufgaben zuweisen, die ausgeführt werden, wenn sich ein Benutzer an einem bestimmten Computer anmeldet. Die Skripte können Betriebssystembefehle ausführen, Systemumgebungsvariablen festlegen und andere Skripte oder ausführbare Programme aufrufen. Die Windows Server 2003-Produktfamilie unterstützt zwei Skriptumgebungen: Auf dem Befehlsprozessor werden Dateien ausgeführt, die Batch-Sprachbefehle enthalten, und auf dem Windows Script Host (WSH) werden Dateien ausgeführt, die Microsoft Visual Basic Scripting Edition- (VBScript) oder Jscript-Befehle enthalten. Sie können einen Texteditor verwenden, um Anmeldeskripts zu erstellen. Einige Aufgaben, die häufig von Anmeldeskripten ausgeführt werden, umfassen:

  • Netzlaufwerke zuordnen.
  • Installieren und Festlegen des Standarddruckers eines Benutzers.
  • Sammeln von Computersysteminformationen.
  • Aktualisieren von Virensignaturen.
  • Software aktualisieren.
  • Das folgende Beispielanmeldeskript enthält VBScript-Befehle, die Active Directory verwenden
  • Service Interfaces (ADSI) zum Ausführen von drei allgemeinen Aufgaben basierend auf der Gruppenzugehörigkeit eines Benutzers:

Es ordnet das Laufwerk H: dem Basisverzeichnis des Benutzers zu, indem es die MapNetworkDrive-Methode des WSH-Netzwerkobjekts in Kombination mit der UserName-Eigenschaft des WSH-Netzwerkobjekts aufruft. Es verwendet das ADSI-IADsADSystemInfo-Objekt, um den definierten Namen des aktuellen Benutzers abzurufen, der wiederum zum Herstellen einer Verbindung mit dem entsprechenden Benutzerobjekt in Active Directory verwendet wird. Sobald die Verbindung hergestellt ist, wird die Liste der Gruppen, zu denen der Benutzer gehört, mit dem Attribut memberOf des Benutzers abgerufen. Die mehrwertige Liste der Gruppennamen wird mithilfe der Join-Funktion von VBScript zu einer einzelnen Zeichenfolge verbunden, um die Suche nach Zielgruppennamen zu vereinfachen.

Wenn der aktuelle Benutzer Mitglied einer der drei oben im Skript definierten Gruppen ist, ordnet das Skript das Laufwerk G: des Benutzers dem freigegebenen Gruppenlaufwerk zu und legt den Standarddrucker des Benutzers als Gruppendrucker fest. So erstellen Sie ein Beispielanmeldeskript

  • Öffnen Sie den Editor.
  • Kopieren Sie Folgendes, und fügen Sie es ein, oder geben Sie Folgendes ein:

    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
    
  • Klicken Sie im Menü Datei auf Speichern unter.

  • Klicken Sie unter Speichern in auf das Verzeichnis, das dem freigegebenen Netlogon-Ordner des Domänencontrollers entspricht (normalerweise SystemRoot \ SYSVOL \ Sysvol \ DomainName \ Scripts, wobei DomainName der vollständig qualifizierte Domänenname der Domäne ist).
  • Klicken Sie unter Dateityp auf Alle Dateien.
  • Geben Sie unter Dateiname einen Dateinamen gefolgt von VBS ein, und klicken Sie dann auf Speichern. WSH verwendet die Erweiterung .vbs, um Dateien zu identifizieren, die VBScript-Befehle enthalten.
Ivo Flipse
quelle
Immer schön zu sehen, dass jemand die Antwort mochte :-D
Ivo Flipse
Ich möchte fast diese CW drehen und es faq tag :)
Quack Quixote
Sei mein Gast @quack ;-) FAQ für was eigentlich?
Ivo Flipse
14

Der einfachste Weg, den ich mir vorstellen kann, wäre, dies in eine .bat-Datei in Ihrem Startordner zu schreiben.

Eine kompliziertere Möglichkeit wäre das Hinzufügen der Batchdatei zur Registrierung in der

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Registrierungsschlüssel.

Bruce McLeod
quelle
8
Wenn Sie dies ausführen möchten, wenn sich ein Benutzer anmeldet, müssen Sie es im Startordner All Users ( % allusersprofile% / Startmenü \ Programme \ Startup ) ablegen oder einen Eintrag im Abschnitt Run des LocalMachine-Registers vornehmen: HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run )
Treb
Ich führe eine EXE-Datei auf diese Weise aus, aber gibt es eine Möglichkeit, dass sie leise ausgeführt wird? Ohne ein cmd zu öffnen und offen zu halten?
bzupnick
2

Eine gute Alternative ist das Erstellen einer Batch-Datei mit den Befehlen, die Sie in ihnen ausführen möchten. Als Nächstes geben Sie im Richtlinieneditor auf dem Computer an, dass ein Anmeldeskript als Teil des Anmeldevorgangs ausgeführt werden soll. Kurz gesagt, diese Option ist nur unter XP Pro und nicht in der Home-Version verfügbar.

Tutorial zum Gruppenrichtlinien-Editor hier

Axxmasterr
quelle
2

Weiß jemand, ob dies zum Ausführen verwendet werden kann, wenn der Bildschirm ebenfalls gesperrt / entsperrt ist?

Es gibt einen Weg für Windows 7 und / oder Windows Server 2008.

Verwenden Sie den Taskplaner, erstellen Sie eine neue Basisaufgabe, als Auslöser verwenden Sie "Beim Anmelden".

Tomas Tintera
quelle
Sie können keine Basisaufgabe verwenden, wenn der Auslöser "On workstation unlock" sein soll
Jeff
2

Das ist nicht nötig! Windows verfügt bereits über einen Mechanismus, um dies im Ereignisprotokoll zu protokollieren. Die Ereignis-ID lautet 4624 (528 auf Systemen vor Vista).

Aryeh Leib Taurog
quelle