【PowerShell講座】バッチファイルからスクリプトを実行する

バッチファイルからスクリプトを実行する

PowerShell講座です。

前回は、Excel を操作する方法を紹介しました。

【PowerShell講座】Excelを操作する

2020.01.17

今回は、バッチファイルからスクリプト(.ps1)を実行する方法を紹介します。



バッチファイルからスクリプトを実行する

バッチファイルからスクリプトを実行する方法を紹介します。

そもそも、なんでこんなことをする必要があるかというと、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 です。

まずは、run.bat のソースを紹介します。

@echo off
echo 実行しています。
echo;
powershell -ExecutionPolicy Unrestricted -File test.ps1
echo;
echo 実行完了しました。
pause > nul

続いて、test.ps1 のソースです(これは何でもいいですけど)。

Write-Host "PowerShell のサンプルコードです。"

作成した run.bat を test.ps1 と同じ階層に設置して実行してもらうと run.bat をダブルクリックするだけで実行することが可能です。

バッチファイルからスクリプトを実行する

もちろん、実行ポリシーは一時的なものなので Restricted に戻す必要もありません。

最後に

いかがでしょうか。

今回のバッチファイルを使えば、PowerShell で作成したスクリプトをガンガン動かすことができます。

色々試してみると面白いかと思います。