その他の環境構築まとめはこちら
Claude Code 環境構築・運用Tipsまとめ
この記事は【改良版】WSL2版 Claude Code にスクショを渡す操作を 3→2キーに減らした の補足です。
この記事は何?
自作のPowerShellスクリプトをデスクトップのショートカットからダブルクリック起動して、バックグラウンドで常駐させたい。ついでに二重起動も防ぎたい。
で、AIで考えてもらったことの覚書です。
1. デスクトップショートカットの作り方
手順
-
デスクトップで 右クリック → 新規作成 → ショートカット
-
「項目の場所」に以下を入力。"\path\to\your-script.ps1"はスクリプトのあるパス+ファイル名にすること:
powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\path\to\your-script.ps1" -
名前を付けて「完了」
各オプションの意味
| オプション | 効果 |
|---|---|
-NoProfile |
ユーザーのPowerShellプロファイルを読み込まない(起動を速くし、環境差異を回避) |
-ExecutionPolicy Bypass |
実行ポリシーを一時的にバイパス(スクリプト実行を許可) |
-WindowStyle Hidden |
PowerShellウィンドウを非表示にする |
-File |
実行するスクリプトのパスを指定 |
ウィンドウが一瞬チラつく場合
-WindowStyle Hidden を付けても、ウィンドウが一瞬だけ表示されることがあります。気になる場合は、ショートカットのプロパティで 「実行時の大きさ」を「最小化」 に変更すると軽減できます。
2. Windows起動時に自動で常駐させる
ショートカットをスタートアップフォルダにコピーするだけです。
Win + R → shell:startup → Enter
開いたフォルダに、先ほど作ったショートカットをコピー(または移動)します。次回のログオン時から自動で常駐が始まります。
3. 二重起動を防止する(Mutex)
ショートカットを何度もダブルクリックすると、プロセスが複数立ち上がります。常駐スクリプトでは特に困るので、Mutexで排他制御するのがおすすめです。
スクリプトの冒頭に以下を追加します。
# 二重起動防止(Mutexで排他制御)
$mutexName = "Global\YourScriptUniqueName"
$mutex = New-Object System.Threading.Mutex($false, $mutexName)
if (-not $mutex.WaitOne(0, $false)) {
exit 0
}
終了時にMutexを解放します。try / finally で囲んでいれば、異常終了時も確実に解放されます。
try {
# --- メインの処理 ---
} finally {
$mutex.ReleaseMutex()
$mutex.Dispose()
}
ポイント
-
$mutexNameはシステム全体で一意な名前にする。Global\プレフィックスを付けると、異なるセッション間でも排他制御が効く - 2回目以降の起動は
exit 0で即終了するので、何度クリックしても安全
4. 組み合わせたテンプレート
以上をまとめると、常駐スクリプトのテンプレートはこうなります。
# your-script.ps1
# 常駐型スクリプトのテンプレート
# ---- 二重起動防止 ----
$mutexName = "Global\YourScriptUniqueName"
$mutex = New-Object System.Threading.Mutex($false, $mutexName)
if (-not $mutex.WaitOne(0, $false)) {
exit 0
}
try {
# ---- ここにメインの処理を書く ----
# 例: 無限ループで常駐、イベント監視、RegisterHotKey など
while ($true) {
# 何かを監視・処理する
Start-Sleep -Seconds 1
}
} finally {
# ---- 終了処理 ----
$mutex.ReleaseMutex()
$mutex.Dispose()
}
ショートカットの「項目の場所」は以下の通り。
powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\path\to\your-script.ps1"
停止方法
-WindowStyle Hidden で起動したスクリプトにはウィンドウがないので、停止はタスクマネージャーから行います。
-
Ctrl+Shift+Escでタスクマネージャーを開く - 「詳細」タブで
powershell.exeを探す - 右クリック →「タスクの終了」
常駐スクリプトが複数ある場合は、コマンドラインの列を追加表示すると見分けがつきます。