ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【PowerShell】PowerShellを記述したファイルをコマンドで実行する方法

 過去の記事でPowerShellを右クリックから実行するような内容を書きました。

 しかし、コマンドで実行できた方がが何かと便利なので、今回はPowerShellを記述したファイルをコマンドで実行する方法になります。


 では、始めます。


・コマンドからの実行方法
 powershellでファイルを実行するための基本的なコマンドは以下の通りです。

powershell [ファイルパス]

// 例
powershell .\test1.ps1

 しかし処理内容などによっては権限やポリシーで実行できない場合があります。その場合はオプションを付けて実行します。

オプション 内容
-NoProfile プロファイル無しで実行
-ExecutionPolicy Unrestricted ポリシーの制限なしで実行
-verb runas この記述の前にあるコマンドを管理者権限で実行

 この他にもオプションは色々ありますが、オプションについての詳しい説明は参考資料に挙げているページ様を参照してください。

 ひとまず「プロファイル無し、ポリシー無制限、管理者権限で実行」するには以下のように記述します。

powershell -NoProfile -ExecutionPolicy Unrestricted [ファイルパス] -verb runas

 例えば実行させたいPowerShellのファイル(test1.ps1)を管理者権限で実行するためのバッチファイル(start.bat)を同階層に作る場合は以下のようになります。

・start.bat

@echo off

@REM 現在のフォルダに移動
cd /d %~dp0

@REM 同階層のtest1.ps1をプロファイル無し、ポリシー無制限、管理者権限で実行
powershell -NoProfile -ExecutionPolicy Unrestricted ".\test1.ps1" -verb runas

 このようにバッチファイルからPowerShellファイルを呼び出すことで、管理者権限を付与した状態で実行することができます。


 以上がPowerShellを記述したファイルをコマンドで実行する方法になります。

 バッチファイルから管理者権限でPowerShellが実行できてしまうため、「-verb runas」オプションの扱いには注意が必要です。
 本当に必要な処理だけにつけるようにしましょう。


・参考資料