明日は我が身の備忘録(あすびぼ)

自分向け備忘録です。頻繁に更新は難しいでしょうね

Windows Powershell でスクリプトを実行できるようにする

 Windowsで複数のファイル名の変更やファイル移動、エクセルで定型作業等を行う際に便利なのがPowershellだ。そしてそのPowerShellの機能を存分に発揮させるためにはスクリプトという複数のコマンドをひとまとまりにして扱うものを使う必要がある。

 しかし、Windowsでは初期設定でこのスクリプトを実行できないように設定されている。これはセキュリティの観点からだと思うが、セキュリティは気を付けるとして有効化する。

f:id:kirikoshokunin:20210403170401p:plain

 

 スクリプトを有効にする。

 Windowsは初期設定だと、スクリプトがセキュリティの観点から禁止されている。そのため、まずは有効化する必要がある。

参考にしたのは下のサイト docs.microsoft.com

管理者権限でPowerShellを実行する

 

f:id:kirikoshokunin:20210403160804p:plain:w300
PowerShellを管理者として事項

現状どのような実行ポリシーなのか確認する。

下のコマンドを実行すると 現状の実行ポリシーを取得し、優先順位で表示する

Get-ExecutionPolicy -List

私の環境では、下のような実行結果となった。 全てが Undefined となっている。つまり現状だとどのようなスクリプトも実行できない。

f:id:kirikoshokunin:20210403160859p:plain:w300
PowerShellで実行ポリシーを確認

優先順位が高い、スコープで実行ポリシーを変更してスクリプトを実行できるようにすると、自分のスクリプトを実行する際には便利だがセキュリティの観点からは推奨できない。

管理者権限のスクリプトWindows上のほとんどの機能、ディレクトリにアクセスできるため悪意のあるスクリプトや間違った使い方をしたら最悪Windowsが壊れる。そのため、スクリプトの実行は慎重にした方が良い。

実行ポリシーを変更

CurrentUserの実行ポリシーを Unrestricted に変更する。これに変更するローカル上のスクリプトを無制限で使用できるようになる。

コマンドは下のようなもの

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

これを実行して現状の実行ポリシーを確認するとしたのように正常に変更されているのがわかる。

下の画像では一度RemoteSigned に変更しているが、これではCドライブ以外のスクリプトを実行できなかったので再度 Unrestricted に変更している。

f:id:kirikoshokunin:20210403161047p:plain:w300
実行ポリシーを変更して確認