ウィンドウを表示せずに PowerShell スクリプトを実行する方法

  1. -WindowStyle Hidden パラメーターを使用してウィンドウを表示せずに PowerShell スクリプトを実行する
  2. タスクスケジューラを使用してウィンドウを表示せずに PowerShell スクリプトを実行する
  3. サードパーティツールを使用してウィンドウを表示せずに PowerShell スクリプトを実行する
  4. 結論
ウィンドウを表示せずに PowerShell スクリプトを実行する方法

Microsoft の PowerShell は、Windows オペレーティングシステムにデフォルトで付属するツールで、コマンドラインインターフェースやコマンドに基づいた自動化機能を Windows ユーザーに提供します。

PowerShell はスクリプトツールおよび自動化ツールであるため、時にはアプリケーションをバックグラウンドで静かに実行する必要があります。この記事では、PowerShell アプリケーションをバックグラウンドで静かに実行し、コマンドをバックグラウンドで実行する方法を見ていきます。

PowerShell ツールの隠された機能を実現するために、PowerShell ツールと組み合わせることができるサードパーティ製ツールがあります。ただし、PowerShell のみでこれを実現する簡単な方法もあります。

-WindowStyle Hidden パラメーターを使用してウィンドウを表示せずに PowerShell スクリプトを実行する

スクリプトウィンドウを隠す簡単な方法の一つは、ウィンドウスタイルとして hidden タイプを使用することです。ウィンドウスタイルの PowerShell ウィンドウは、最初に短時間表示された後、スクリプト実行中に隠れます。

PowerShell の -WindowStyle パラメーターを使用すると、PowerShell ウィンドウの外観を制御できます。-WindowStyle Hidden パラメーターを適用すると、スクリプト実行中に PowerShell ウィンドウが表示されないことが保証されます。

これは、ユーザーの操作を必要としない自動化タスクや、ユーザーの作業を中断したくない場合に特に便利です。

-WindowStyle Hidden パラメーターを使用して PowerShell スクリプトを実行するのは簡単です。PowerShell ウィンドウを開き、次のコマンドを使用します。

PowerShell.exe -WindowStyle Hidden { Script you want to execute.. }

コマンドの各部分の機能は次のとおりです:

  • PowerShell.exe:新しい PowerShell プロセスを開始します。
  • -WindowStyle Hidden:ウィンドウスタイルを隠すように設定し、PowerShell ウィンドウが表示されないようにします。
  • 実行したいスクリプトは中括弧 {} で囲まれています。

上記コマンドの PowerShell 実行は、以下の画像に示されています。

PowerShell 実行

入力すると、ウィンドウは消えますが、アプリケーションはバックグラウンドで実行されています。以下のバックグラウンドプロセスの画像に示されているように、PowerShell はバックグラウンドプロセスとして実行されます。

バックグラウンドプロセス

この方法では、ユーザーは最初に PowerShell を目にします。したがって、エンドユーザーから完全に隠されているわけではありません。タスクが事前にスケジュールされていても、ウィンドウがポップアップし、すぐに隠れます。

バッチファイルを使用する

より複雑なスクリプトを扱う場合や、何度も実行する予定がある場合、この方法(PowerShell コマンドを含むバッチファイル)はより整理され、効率的です。

次の内容でバッチファイル(例:run_script.bat)を作成します:

@echo off
powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
  • @echo off:このコマンドはバッチファイルがコマンドをコンソールウィンドウに表示しないようにします。
  • powershell -WindowStyle Hidden -File "C:\path\to\script.ps1":この行は、必要なパラメーターとスクリプトへのパスで PowerShell を呼び出します。

上記のコードは、ウィンドウを表示せずに PowerShell スクリプトを実行するという同じ目的を達成しますが、わずかに異なるアプローチを使用しています。ただし、PowerShell の真の隠された機能を実現する他の簡単な方法もあります。

タスクスケジューラを使用してウィンドウを表示せずに PowerShell スクリプトを実行する

タスクスケジューラは、特定の時刻やイベントに自動的にタスクを実行できる Windows のユーティリティです。さまざまなタスクを管理するためのカスタマイズオプションが豊富に用意されており、非常に便利なツールです。

新しいタスクを作成

  1. タスクスケジューラを開く:Windows スタートメニューで「Task Scheduler」を検索することで行えます。
  2. 「アクション」へ移動:右側のペインで「タスクの作成」をクリックします。

タスクの設定

  1. タスクの名前を付ける:タスクの名前と説明を提供します。これはタスクの内容を反映したわかりやすいものであるべきです。
  2. タスクのトリガーを選択:タスクをどのようにトリガーするかを選択します。オプションには、毎日、毎週、毎月、ログオン時などがあります。ニーズに最も適したトリガーを選択します。

トリガーの設定

  1. トリガーの詳細を選択:選択したトリガーに応じて、追加の詳細を提供する必要があります。例えば、「毎日」を選択した場合は、時間と頻度を指定します。
  2. 高度な設定: 「高度な設定」をクリックすることで、より高度なオプションを設定できます。これは、タスクが実行される期間や頻度をさらにカスタマイズすることを可能にします。

アクションの指定

  1. アクションを選択: 「アクション」ステップで、「新規」>「プログラムの開始」を選択します。ここでは PowerShell スクリプトを実行します。
  2. プログラム/スクリプト:システム上の powershell.exe を参照して選択します。
  3. 引数を追加(オプション):次の内容を入力します:
-WindowStyle Hidden -File "C:\path\to\script.ps1"

"C:\path\to\your\script.ps1"を PowerShell スクリプトの実際のパスに置き換えます。

プログラムを開始します

セキュリティオプションの有効化

「最高の特権で実行する」というチェックボックスにチェックを入れます。これにより、必要に応じてスクリプトが管理者権限で実行されます。

「ユーザーがログオンしているかどうかにかかわらず実行」をクリックすると、タスクが実行されるときに PowerShell ウィンドウが表示されません。

タスクスケジューラ

タスクの完了とテスト

タスクの概要を確認し、「OK」をクリックして作成します。

タスクスケジューラでタスクを右クリックし、「実行」を選択することで、タスクをテストできます。これにより、設定したトリガーに基づいてタスクが即座に実行されます。

タスクスケジューラを使用することで、指定された間隔やイベントでタスクを自動化できます。適切な引数で PowerShell をトリガーすることにより、スクリプトを静かに実行できます。

ただし、この方法は、一部のスクリプトの機能に影響を及ぼす可能性があります。したがって、サードパーティ製ツールや PowerShell のコミュニティ拡張機能を使用することもできます。

サードパーティツールを使用してウィンドウを表示せずに PowerShell スクリプトを実行する

サードパーティツールは、追加の機能や特徴を提供することで PowerShell の機能を拡張します。ウィンドウを表示せずに PowerShell スクリプトを実行する際に、これらのツールは自動化タスクをシームレスに行う上で重要な役割を果たします。

PSExec を使用する

PSExec は、プロセスをリモートで実行できる多目的ツールで、Microsoft の一部である Sysinternals から提供されています。これを使用して PowerShell スクリプトを静かに実行できます。

psexec -d -s powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
  • psexecPSExec を起動します。
  • -dPSExec にコマンドの完了を待たないように指示します。
  • -s:システム権限でコマンドを実行します。
  • powershell -WindowStyle Hidden -File "C:\path\to\script.ps1":PowerShell スクリプトを静かに実行します。

NSSM (Non-Sucking Service Manager) を使用する

NSSM は、アプリケーションをサービスとして実行できる Windows のサービスマネージャーです。これにより、バックグラウンドでスクリプトを静かに実行することが特に便利です。

  1. 公式ウェブサイトから NSSM をダウンロードしてインストールします。
  2. 管理者権限でコマンドプロンプトを開きます。
  3. 新しいサービスを作成するために次のコマンドを実行します:
nssm install <ServiceName> "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1"
  • nssm install <ServiceName>:指定された名前で新しいサービスをインストールします。
  • "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe":PowerShell 実行可能ファイルのパスを指定します。
  • "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1":PowerShell にパラメーターを渡し、スクリプトを静かに実行するように指示します。

結論

PowerShell は、Windows ユーザーにとって強力な自動化ツールであり、広範なコマンドライン機能を提供します。静かなバックグラウンド実行が必要なシナリオでは、いくつかの方法が利用可能です。

  • -WindowStyle Hidden パラメーターの使用:これにより、スクリプト実行中に先に PowerShell ウィンドウが短時間表示され、その後隠れることができます。ユーザーの操作を必要としない自動化タスクに適しています。
  • バッチファイル:複雑なスクリプトや繰り返し実行するために整理されたもの。バッチファイルは、必要なパラメーターで PowerShell を呼び出します。
  • タスクスケジューラ:特定の時刻やイベントでの自動化を提供します。適切なパラメーターで PowerShell を実行するように設定することで、スクリプトを静かに実行できます。
  • サードパーティツール(例:PSExecNSSM):PowerShell の機能を拡張し、ウィンドウを表示せずにスクリプトを実行できるようにします。

特定のニーズや作業フローに最適な方法を選択してください。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.