【PowerShell】batファイルを介して起動

概要

PowerShellスプリクト(ps1ファイル)の実行には、実行ポリシーの設定が必要です。
実行ポリシー設定がデフォルトのままだと、実行しようとしてもエラーが発生してしまいます。
回避する方法がいくつかありますが、今回はbatファイルを介して起動する方法をまとめました。

【メリット】
・設定ポリシーの設定が不要
・batファイルにドラッグしたファイルのパスを引数としてps1ファイルに渡せる

【デメリット】
・必要なファイルが2つになる(ps1,bat)

ps1ファイルをbatから起動

下記コードのbatファイルを起動すると、ps1ファイルが実行できます。

BAT (Batchfile)
@echo off
rem ps1ファイルを起動
powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1
BAT (Batchfile)

“.\test.ps1″の部分をps1ファイルのパスに変更して下さい。
(上記の場合は、batファイルとps1ファイルが同じディレクトリにある場合の指定)

ドラックしたファイルのパスを引数として渡す

ドラックしたファイルのパスを引数として渡す場合は最後に”%1″を記載します

BAT (Batchfile)
powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1 %1 
BAT (Batchfile)

ps1ファイルでは”$args[0]”で、ドラッグしたファイルの絶対パスを参照できます。

PowerShell
echo $args[0]
PowerShell