Windowsにログオンしたときにスクリプトを自動的に実行する


27

Windowsにログオンするときにスクリプトを自動的に実行するにはどうすればよいですか?

コンピューターにログインするたびに次のようなものを実行したいと思います。

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

ボーナスは、スクリーンセーバーのロックを解除するたびに同じスクリプトを実行できることです。


答えは非常に高いオクタンです-ワンライナーを使用して、以下にもっと謙虚な(しかし効果的な)何かを提供します... ;
ジェフ14

回答:


19

コンピューターのロックが解除されたときに実行されるスケジュールされたタスクを作成できます。

  1. [スタート]> [管理ツール]> [タスクスケジューラ]
  2. 左ペイン:タスクスケジューラライブラリを選択
  3. 右ペイン:[タスクの作成...]をクリックします(注:これが正しいトリガーを取得する唯一の方法です)
  4. [タスクの作成]ダイアログで:
    • [全般]タブ-タスクの名前を入力します
    • [トリガー]タブ-[新規...]をクリックし、[ワークステーションのロック解除時]を選択します
    • [アクション]タブ-[新規...]をクリックし、[参照...]をクリックしてスクリプトを見つけます
    • 条件タブ-コンピューターがAC電源の場合にのみタスクを開始のチェックを外します

また、スクリプトのパスを調整して読み取りました

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

22

すでにスクリプトがある場合:

ユーザーまたはグループにログオンスクリプトを割り当てるには

  • コンピューターの管理を開きます。
  • コンソールツリーで、[ユーザー]をクリックします。

どこ?システムツール/ローカルユーザーとグループ/ユーザー

  • ログオンスクリプトを割り当てるユーザーをダブルクリックします。
  • [プロファイル]タブをクリックします。
  • [ログオンスクリプト]フィールドに、そのユーザーに割り当てるログオンスクリプトのパスと名前を入力し、[OK]をクリックします。

それ以外の場合は、Microsoftの便利な「HowTo」です

ログオンスクリプトの作成

ログオンスクリプトを使用して、ユーザーが特定のコンピューターにログオンしたときに実行されるタスクを割り当てることができます。スクリプトは、オペレーティングシステムコマンドを実行し、システム環境変数を設定し、他のスクリプトまたは実行可能プログラムを呼び出すことができます。Windows Server 2003ファミリは、2つのスクリプト環境をサポートしています。コマンドプロセッサはバッチ言語コマンドを含むファイルを実行し、Windowsスクリプトホスト(WSH)はMicrosoft Visual Basic Sc​​ripting Edition(VBScript)またはJscriptコマンドを含むファイルを実行します。テキストエディタを使用して、ログオンスクリプトを作成できます。ログオンスクリプトによって一般的に実行されるタスクには次のものがあります。

  • ネットワークドライブのマッピング。
  • ユーザーのデフォルトプリンターのインストールと設定。
  • コンピューターシステム情報の収集。
  • ウイルス署名の更新。
  • ソフトウェアの更新。
  • 次のログオンスクリプトの例には、Active Directoryを使用するVBScriptコマンドが含まれています
  • ユーザーのグループメンバーシップに基づいて3つの一般的なタスクを実行するサービスインターフェイス(ADSI):

WSHネットワークオブジェクトのMapNetworkDriveメソッドをWSHネットワークオブジェクトのUserNameプロパティと組み合わせて呼び出すことにより、H:ドライブをユーザーのホームディレクトリにマップします。ADSI IADsADSystemInfoオブジェクトを使用して現在のユーザーの識別名を取得し、Active Directory内の対応するユーザーオブジェクトに接続するために使用します。接続が確立されると、ユーザーのmemberOf属性を使用して、ユーザーがメンバーになっているグループのリストが取得されます。グループ名の複数値リストは、VBScriptのJoin関数を使用して単一の文字列に結合され、ターゲットグループ名の検索が容易になります。

現在のユーザーがスクリプトの上部で定義された3つのグループのいずれかのメンバーである場合、スクリプトはユーザーのG:ドライブをグループ共有ドライブにマップし、ユーザーのデフォルトプリンターをグループプリンターに設定します。ログオンスクリプトの例を作成するには

  • メモ帳を開きます。
  • 以下をコピーして貼り付けるか、入力します。

    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
    
  • [ファイル]メニューの[名前を付けて保存]をクリックします。

  • [保存する場所]で、ドメインコントローラーのNetlogon共有フォルダー(通常はSystemRoot \ SYSVOL \ Sysvol \ DomainName \ Scriptsで、DomainNameはドメインの完全修飾ドメイン名)に対応するディレクトリをクリックします。
  • [ファイルの種類]で、[すべてのファイル]をクリックします。
  • [ファイル名]にファイル名を入力し、続いて.vbsを入力して、[保存]をクリックします。WSHは.vbs拡張子を使用して、VBScriptコマンドを含むファイルを識別します。

誰かが答えを気に入ってくれたのをいつも見てくれて嬉しいです。
Ivo Flipse

私はほとんどこのCWをオンにしたいとタグは、それはよくある質問 :)
いんちきキホーテ

ゲスト@quackになります;-)よくある質問
Ivo Flipse

14

私が考えることができる最も簡単な方法は、これを起動フォルダーの.batファイルに入れることです。

より複雑な方法は、バッチファイルをレジストリに追加することです

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

レジストリキー。


8
あなたがこれを実行したい場合はときすべてのユーザーがログオンが、あなたはすべてのユーザーのスタートアップフォルダに配置する必要があり(%ALLUSERSPROFILE%/スタートメニュー\プログラム\スタートアップ)、またはLOCALMACHINE REGハイブのファイル名を指定して実行]セクションでのエントリを入力します。HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run
Treb

この方法で.exeを実行しますが、静かに実行する方法はありますか?cmdを開かずに開いたままにしませんか?
-bzupnick

2

適切な代替方法は、実行するコマンドを含むバッチファイルを作成することです。次に、マシンのポリシーエディターで、ログインプロセスの一部としてログインスクリプトを実行するように指定します。簡単な注意点は、このオプションはXP Proでのみ使用可能であり、ホームバージョンでは使用できないことです。

グループポリシーエディターのチュートリアルはこちら


2

画面がロック/ロック解除されているときにこれを使用して実行できるかどうかは誰でも知っていますか?

Windows 7やWindows Server 2008には方法があります。

トリガーが「ログオン時」を使用するため、タスクスケジューラを使用して、新しい基本タスクを作成します。


トリガーを「ワークステーションのロック解除」にする場合は、基本タスクを使用できません
ジェフ14

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.