Windows PowerShell: PowerShell.exe
他の多くの Windows PowerShell の関数と同じように、Windows PowerShell を起動する方法は複数あります。
Don Jones
ほとんどの場合、[スタート] メニューのショートカットを使用して Windows PowerShell を起動するでしょう。ただし、新しいシェル セッションでプログラムを起動したい場合もあります。これは、スクリプトの実行をスケジュールしたり、外部バッチ ファイルの一部としてスクリプトを実行する場合に必要な方法です。
上記を含む、その他の多くの状況で、必要な処理を実行する鍵となるのは、PowerShell.exe 実行可能ファイルです。この実行可能ファイルには、Windows PowerShell のインストール フォルダーからアクセスできます。
PowerShell.exe では、新しいコンソールのシェル セッションを開始しますが、それ以外にも多くのことを実行できます。コマンドには、正確な動作方法を指示する一連のコマンド ライン パラメーターが完備されています。詳細については、コマンド ラインで「PowerShell -?」というコマンドを実行して完全なコマンド ライン パラメーターの一覧を確認するか、このコラムで紹介する重要事項を確認してください。
コマンドを実行する
–command パラメーターでは、1 つの Windows PowerShell コマンドと、そのコマンドで必要なすべてのパラメーターを受け取ります。コマンド文字列にスペースやパラメーターが含まれる場合は、コマンド文字列全体を引用符で囲みます。また、必要に応じて、複数のコマンドレットで構成された完全なパイプラインを含めることもできます。
それから、–file パラメーターを使用することもできます。このパラメーターでは、.PS1 ファイルのパスとファイル名を受け取り、Windows PowerShell では、指定されたファイルのコンテンツを実行します。この方法では、すべてのコマンドを –command パラメーターに詰め込む方法と比べると、はるかに簡単に複雑な一連のコマンドを実行できます。シェルの実行ポリシーがスクリプトの実行に影響することに注意してください。これについては、次のセクションで説明します。
実行ポリシー
–executionpolicy パラメーターでは、Windows PowerShell 実行ポリシーの設定 (Unrestricted、AllSigned、RemoteSigned、および Restricted) の 1 つを受け取ります。指定した設定は、そのシェル セッションでのみ有効で、以前に Set-ExecutionPolicy コマンドレットを使用して、またはグループ ポリシー オブジェクト (GPO) によってローカルに設定したすべてのポリシーをオーバーライドします。
「これはセキュリティの問題ではないのでしょうか」「GPO はオーバーライドできないのではないのでしょうか」という質問が寄せられそうですが、どちらの考えも正しくありません。実行ポリシーはファイアウォールでも、マルウェア対策ソフトウェアでもありません。実行ポリシーは、十分な知識のないユーザーが信頼できないスクリプトを無意識に実行しないようにするために設計されています。–executionpolicy パラメーターを指定する場合は、当然のことながら、意図的に操作しています。そのため、ユーザーは、その操作の責任を取ります。
出力をキャプチャする
通常、Windows PowerShell セッションで実行される内容は、PowerShell.exe によってテキスト形式で出力されます。実行された内容をキャプチャしてテキスト ファイルに追加するだけで良い場合は、それで十分でしょう。
ただし、–outputformat XML という文字列を指定して、シェル スクリプトまたはコマンドで出力されたオブジェクトを PowerShell.exe でキャプチャし、キャプチャしたオブジェクトを CliXML ファイルにシリアル化することができます。この処理は、本質的に、シェルでオブジェクトを Export-CliXML コマンドレットにパイプした場合と同じです。この処理により、出力は、別のシェル セッションに簡単に再インポートできる形式に変換されます。
その他の秘訣
他にも知っておくと便利なコマンド ライン パラメーターが 3 つあります。
- -noProfile: Windows PowerShell の実行時に、プロファイル スクリプトが読み込まれないようにします。ローカル プロファイル スクリプトに含まれているものが必要でないことがわかっている場合は、プロファイル スクリプトを読み込まないことで時間を少し節約できます。これは、問題が発生しているプロファイルがある場合にも有用です。プロファイル スクリプトを読み込まずにシェルを起動して、トラブルシューティングに着手できます。
- -noExit: –command パラメーターまたは –file パラメーターで指定されたすべてのものを実行した後、シェルを開いたままにするよう、シェルに指示します。通常は、この 2 つのパラメーターのいずれかを使用すると、処理が完了したときにシェルが終了します。これは、一般的に必要とされる動作です。–noExit パラメーターを使用すると、シェルで引き続き処理を実行できます。これは、実行した処理の結果をデバッグおよび確認するのに便利です。
- -nonInteractive: ユーザーに対話型のプロンプトを表示することなく実行するよう、シェルに指示します。多くの場合、このパラメーターは、–command パラメーターまたは –file パラメーターと組み合わせて使用します。
PowerShell.exe をマスターする
PowerShell.exe には、スクリプトを実行したり、出力を制御したりするためのさまざまなオプションが用意されています。スクリプトのスケジュール、ログイン スクリプトの実行、大きなバッチ処理の一部としてのコマンドを実行するなど、どのような目的で PowerShell.exe を使用する場合でも、秘策を用意しておくのは良いことです。
Don Jones は、Microsoft MVP の受賞者で、『Learn Windows PowerShell in a Month of Lunches』(Manning Publications、2011 年) の著者でもあります。この書籍は、管理者が Windows PowerShell を効率的に使用できるようにすることを目的としています。また、一般ユーザーを対象にオンサイトの Windows PowerShell トレーニングも開催しています。Don に対するお問い合わせについては、ConcentratedTech.com (英語) または bit.ly/AskDon (英語) を参照してください。