Windows PowerShell でプロセスの開始

Marion Paul Kenneth Mendoza 2023年1月30日
  1. PowerShell の Start-Process コマンドレット
  2. Start-Process コマンドレットパラメータ
  3. PowerShell の利点 Start-Process
Windows PowerShell でプロセスの開始

Start-Process コマンドレットは、制御および管理された方法で 1つ以上のプロセスを開始するために使用される PowerShell コマンドです。既定では、開始されたプロセスは現在のすべての PowerShell 環境を継承します。

Start-Process コマンドレットは、実行可能ファイル、バッチスクリプト、MS-DOS および PowerShell コマンド、さらには Java アプリケーションを実行または実行できます。さらに、Windows PowerShell は、Start-Process コマンドレットを使用して、ユーザープロファイル、Windows ステータス、資格情報などを指定できます。

この記事では、Start-Process コマンドレットがどのように機能し、スクリプトを作成するときにそれを利用するかについて説明します。

PowerShell の Start-Process コマンドレット

Start-Process コマンドレットは、1つ以上のプロセス、実行可能ファイルまたはスクリプトファイル、またはインストールされたソフトウェアがコンピューター上で開くことができる任意のファイルを実行します。

Start-Process コマンドレットには、Windows PowerShell を使用する場合の基本的な構文が以下に示されています。

Start-Process <string>

Start-Process コマンドレットパラメータ

Start-Process コマンドレットは、パラメーターを使用して、コマンドレットにさらに強力な機能と柔軟性を追加できます。

新しいプロセスまたは実行可能ファイルを開始する

前述のように、Start-Process コマンドの最も基本的な使用法は、実行可能ファイル、バッチまたはスクリプトファイル、または以下の構文のようなコマンドを提供することです。たとえば、次の構文で呼び出されると、メモ帳アプリケーションが開きます。

Start-Process notepad.exe

または、コマンドレットで -FilePath パラメーターを使用して、実行するファイルの場所を指定することもできます。

Start-Process -FilePath notepad.exe

実行可能ファイルまたはバッチファイルの完全なパスを以下で指定することもできます。次の例では、次の例の D:\scripts ディレクトリの下にあるバッチファイルを実行します。

Start-Process -FilePath "D:\scripts\backup.bat"

標準入力をファイルとして設定

提供された標準入力コンテンツが指定されたプロセスにリダイレクトされる場合、標準入力を使用してプロセス入力を指定できます。この場合、-RedirectStandardInput パラメーターは、新しく作成されたプロセスへの入力としてファイルを設定できます。

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardInput test.txt

上記の構文例では、backup.bat 実行可能入力はファイル test.txt から取得されます。

標準出力をファイルとして設定

プロセスが実行されると、端末、画面、またはファイルに出力できる出力が作成される場合があります。-RedirectStandardOuput パラメーターを使用して、ファイルへの出力を指定できます。

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardOutput test.txt

backup.bat 実行可能出力は、上記の構文例のファイル test.txt から取得されます。

標準エラー出力をファイルとして設定

プロセスの実行中にエラーが発生する可能性があり、これらのエラーに関する情報はデフォルトでコンソールまたは端末に出力されます。-RedirectStandardError パラメータを使用すると、出力を次のようなファイルにリダイレクトできます。

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardError errors.txt

上記の構文例では、backup.bat 実行可能ファイルの実行中にエラーが発生した場合、エラーはファイル errors.txt に出力されます。

作業ディレクトリを設定する

デフォルトでは、新しいプロセスは現在の作業ディレクトリで実行されます。これは通常、システムドライブ C:です。ただし、-WorkingDirectory パラメータを使用して、以下の新しい作業ディレクトリを設定できます。

Start-Process notepad.exe -WorkingDirectory "D:\"

この例では、

新しい環境を作成する

この記事で説明した以前のパラメーターと一緒に、それらを 1つのスクリプトブロックにマージできます。

-UseNewEnvironment パラメーターは、プロセスがその環境変数を使用して実行されることを指定します。

$processOptions = @{
    FilePath = "sort.exe"
    RedirectStandardInput = "TestSort.txt"
    RedirectStandardOutput = "Sorted.txt"
    RedirectStandardError = "SortError.txt"
    UseNewEnvironment = $true
}
Start-Process @processOptions

最大化されたウィンドウの Start-Process

Start-Process コマンドは、コマンドラインプロセスまたは GUI を備えた GUI プロセスを開始できます。

スクリプトは、-WindowStyle パラメータを使用して GUI ウィンドウサイズを設定できます。このパラメータは、新しいプロセスウィンドウを最大化するために最大化として設定できます。

Start-Process notepad.exe -WindowStyle Maximized

別のユーザーとの Start-Process

デフォルトでは、開始されたプロセスは現在のユーザー権限として実行されます。ただし、Start-Process コマンドレットは、プロセスを実行する新しいユーザーを提供することにより、-Credential パラメーターを使用してプロセスの特権を変更できます。

ユーザー名を入力すると、パスワードの入力を求められます。

Start-Process notepad.exe -Credential <username>

管理者として Start-Process を実行する

- Verb パラメーターを使用して、管理者としてアプリケーションを実行できます。

Start-Process notepad.exe -Verb RunAs
管理者として実行しているにもかかわらず、ローカルコンピューターのユーザーアカウント制御(UAC)により、PowerShell は確認を求める必要がある場合があります。セキュリティ上の理由から、UAC を完全に無効にすることはお勧めしません。

指定された引数を持つ Start-Process

コマンド、プロセス、またはバッチファイルは、入力データを取得するために単一または複数の引数を受け入れる場合があります。

この入力データは引数と呼ばれ、Start-Process コマンドは -ArgumentList を使用して開始されたプロセスに引数を提供できます。引数としてプロセスに渡される提供された引数リスト。

Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%systemdrive%\program files`""

PowerShell の利点 Start-Process

  • スクリプトファイルはローカルでのみ開くことができます。これは、Windows PowerShell スクリプトを使用したリモート攻撃を防ぐセキュリティ技術です。
  • コマンドレットは、Microsoft がサポートするスクリプト環境で実行されます。Windows PowerShell がサポートされている限り、Microsoft は、更新プログラムを使用して、言語を最新の状態に保つためのリソースを提供します。
  • 広大な開発者コミュニティは、特に Start-Process コマンドレットと知識を容易に共有します。
  • コマンドレットとシステムデータストアは、標準の一貫した構文と命名規則を使用して、データを簡単に共有します。
  • このコマンドレットを使用すると、オペレーティングシステムのナビゲーションが簡素化され、ユーザーはファイルシステム、レジストリ、およびその他のデータに慣れることができます。
  • オブジェクトは簡単に直接操作したり、他のツールやデータベースに送信したりできます。
  • ソフトウェアベンダーと開発者は、カスタムツールを構築できます。
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn