※この記事は「2023年7月20日」に更新しました。
PowerShell(パワーシェル)講座です。
バッチファイルからスクリプトを実行する
バッチファイルからスクリプトを実行する方法を紹介します。
そもそも、なんでこんなことをする必要があるかを説明します。
Windows PowerShell(Windows 7、8.1、10 などに標準搭載されているもの)の場合、デフォルトの実行ポリシーが Restricted(実行不可)になっています。
これは、PowerShell が Windows そのものを操作できるほど強力だからです。
悪意のあるスクリプトを不用意に実行されないために Restricted になっているのです。
PowerShell Core をインストールして、自分で実行する分には問題ありません。
しかし、自分以外に使ってもらおうと思ったら、実行方法を説明するのが大変かもしれません。
- 実行ポリシーを Unrestricted に変更する
- スクリプト(.ps1)を実行する
- 実行ポリシーを Restricted に戻す
これを全てのユーザーにやってもらうのは面倒です。
一時的に実行ポリシーを変更する
一時的に実行ポリシーを変更するには、-ExecutionPolicyオプションを使います。
powershell -ExecutionPolicy Unrestricted
これをコマンドプロンプトから実行すると、一時的に Unrestricted で PowerShell を使うことができます。
バッチファイルを作成する
先程の内容を踏まえて、バッチファイル(run.bat)を作成します。
ちなみにスクリプトは、test.ps1 です。
@echo off echo 実行しています。 echo; powershell -ExecutionPolicy Unrestricted -File test.ps1 echo; echo 実行完了しました。 pause > nul
Write-Host "PowerShell のサンプルコードです。"
作成した run.bat を test.ps1 と同じ階層に設置して実行してもらうと run.bat をダブルクリックするだけで実行することが可能です。
もちろん、実行ポリシーは一時的なものなので Restricted に戻す必要もありません。
最後に
前回は、Excel を操作する方法を紹介しました。
今回のバッチファイルを使えば、PowerShell(パワーシェル)で作成したスクリプトをガンガン動かすことができます。
色々試してみると面白いかと思います。