PowerShellには、新しいプロセスを開始するための便利なコマンド Start-Process
があります。Windows上でアプリケーションを自動起動したり、スクリプトの中で他のプログラムを実行したりする際に活用できます。
例えば、テキストエディタやブラウザを開いたり、管理者権限でアプリを実行する場合にも便利です。本記事では、 Start-Process
の基本的な使い方から、具体的な活用方法、オプションの詳細まで詳しく解説します。
PowerShellでプロセスを管理したい方は、ぜひ最後まで読んでマスターしてください!
PowerShellの Start-Process
コマンドは、新しいプロセス(アプリケーションやスクリプトなど)を開始するためのコマンドレットです。
Start-Process -FilePath "<実行するプログラム>"
このコマンドは、指定したプログラムを新しいプロセスとして起動します。例えば、メモ帳(Notepad)を開く場合は次のように実行します。
Start-Process -FilePath "notepad.exe"
また、Google Chromeを開く場合は以下のようになります。
Start-Process -FilePath "chrome.exe"
Start-Process
には、プロセスの実行方法を制御するためのさまざまなオプションがあります。ここでは、主要なオプションを紹介します。
アプリケーションに引数を渡すことができます。例えば、メモ帳で特定のファイルを開く場合:
Start-Process -FilePath "notepad.exe" -ArgumentList "C:\Users\test\document.txt"
通常、Start-Process
は新しいウィンドウを開いてプロセスを起動しますが、-NoNewWindow
を使うと現在のウィンドウで実行できます。
Start-Process -FilePath "cmd.exe" -NoNewWindow
この場合、CMD(コマンドプロンプト)がPowerShellのウィンドウ内で動作します。
通常、Start-Process
は非同期でプロセスを起動し、すぐにPowerShellの処理が進みます。-Wait
オプションを使うと、プロセスが終了するまでPowerShellの処理が待機します。
Start-Process -FilePath "notepad.exe" -Wait
これは、特定のアプリケーションが終了するまで次の処理を待機する場合に便利です。
-PassThru
オプションを使うと、起動したプロセスの情報(プロセスIDなど)を取得できます。
$process = Start-Process -FilePath "notepad.exe" -PassThru
$process.Id
このコマンドを実行すると、メモ帳のプロセスID(PID)が表示されます。
-Credential
オプションを使用すると、別のユーザーとしてプログラムを実行できます。
Start-Process -FilePath "cmd.exe" -Credential "Administrator"
※ このオプションを使用する場合は、管理者権限が必要です。
管理者権限でアプリを実行する場合は、-Verb RunAs
を使用します。
Start-Process -FilePath "powershell.exe" -Verb RunAs
このコマンドを実行すると、UAC(ユーザーアカウント制御)の確認画面が表示され、管理者としてPowerShellが起動します。
Start-Process
コマンドは、さまざまな場面で活用できます。ここでは、実際の使用例をいくつか紹介します。
特定のファイルを、既定のアプリケーションで開くには -FilePath
にファイルのパスを指定します。
Start-Process -FilePath "C:\Users\test\document.pdf"
このコマンドを実行すると、PDFファイルが既定のPDFリーダーで開かれます。
バッチファイルやPowerShellスクリプトを実行する場合:
Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo Hello, World!"
PowerShellスクリプトを管理者権限で実行する場合:
Start-Process -FilePath "powershell.exe" -ArgumentList "-File C:\scripts\test.ps1" -Verb RunAs
ブラウザで特定のウェブサイトを開くには:
Start-Process -FilePath "chrome.exe" -ArgumentList "https://www.microsoft.com"
Edgeを使う場合:
Start-Process -FilePath "msedge.exe" -ArgumentList "https://www.google.com"
タスクスケジューリングのように、一定時間後にアプリケーションを起動する:
Start-Sleep -Seconds 10
Start-Process -FilePath "notepad.exe"
このコマンドを実行すると、10秒後にメモ帳が起動します。
Start-Process
は、新しいプロセスを開始するための非常に強力なコマンドです。基本的な使い方から、引数の指定、管理者権限での実行、プロセスの制御方法まで、幅広い用途に対応しています。
PowerShellを使って業務を自動化したり、スクリプトの中で外部アプリケーションを呼び出したりする際には、Start-Process
を活用しましょう。
ぜひこの記事を参考に、実際に試してみてください!