Windowsのポチポチ業務を爆速化するPowerShell、スクリプトを実行するための準備


Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。

前回の記事はこちらです。

Windowsのポチポチ業務を爆速化するPowerShell、統合開発環境ISEを紹介します!
Windowsのポチポチ業務(マウスを使った業務)を爆速化できるPowerShell。統合開発環境のPowerShell ISEを使って、効率よくPowerShellの開発を進めましょう!ISEでスクリプトを作成・保存方法とスクリプトで何ができるのかについてお伝えします!

前回は統合開発環境ISEでPowerShellのスクリプトを保存するところまでご説明しました。

PowerShellはWindowsのほぼすべての機能を操作できる強力なCUIであるため、デフォルトの設定ではスクリプトを実行することができません

スクリプトの実行を制御する実行ポリシーというステータスを変更する必要があるんです

本記事を読んで実行ポリシーについて理解し、PowerShellのスクリプトを自在に実行できるようになりましょう!

デフォルトではスクリプトを実行できない

前回保存したスクリプトは以下の通りです。

スクリプトを実行するにはISEのツールバーにある三角の実行マークをクリックするか、F5を押します。

このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\terad\Desktop\sample.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
+ CategoryInfo : セキュリティ エラー: (: ) []、ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnauthorizedAccess

あれ、セキュリティエラーでファイルの読み込みができませんでした。

デフォルトの設定では自分が作ってローカルに保存したスクリプトすら実行できないんです…!

スクリプトの実行を制御する実行ポリシーとは

スクリプトを実行するには、実行ポリシーを変更する必要があります。

実行ポリシーはスクリプトの発走ゲートのような役割を果たします。そう、競馬でカッシャン!と開くゲートのことです。

条件を満たしている場合にゲートが開きスクリプトの実行が可能になる、というようなイメージを持ってください。

実行ポリシーを確認する

現在設定されている実行ポリシーを確認しましょう。

Get-ExecutionPolicyコマンドレットで、現在設定されている実行ポリシーを確認できます

Get-ExecutionPolicy

PS C:\Users\terad> Get-ExecutionPolicy
Restricted

実行ポリシーはRestricted=すべてのスクリプトが実行不可となっています。だからセキュリティエラーになってしまったんですね。

PowerShellのスクリプトはWindowsのほぼすべての機能を操作できる強力なCUI、セキュリティの観点からデフォルトでは実行不可となっています。

実行ポリシーを変更する

さあ、スクリプトを実行するために発走ゲートを開けてあげましょう!

Set-ExecutionPolicyコマンドレットで、実行ポリシーを変更できます

Set-ExecutionPolicy 実行ポリシーの種類 -Scope 実行ポリシーの適用範囲

今回実行ポリシーの種類には自分で作成しローカルに保存したスクリプトが実行可能なRemoteSignedを設定します。

実行ポリシーには以下の種類があります。

実行ポリシーの種類 実行できるスクリプト
Restricted スクリプトの実行を行いません
AllSigned 署名付スクリプト
RemoteSigned 署名付スクリプト、または自分で作成しローカルに保存したスクリプト
Unrestricted すべてのスクリプト、ただしインターネットからダウンロードされた未署名のスクリプトを実行する場合、実行するかどうか確認されるのでユーザーが明示的に許可した場合に実行される
Bypass 何もブロックされず、警告もメッセージも表示されません
Undefined 現在のスコープから割り当てられている実行ポリシーを削除します

Scopeパラメータを使えば、実行ポリシーの適用範囲を指定できます

今回は適用範囲が現在のユーザーとなるCurrentUserを設定します。

Scopeには以下の種類があります。

Scopeの種類 実行できるスクリプト
Process 現在のWindowsPowerShellプロセス(PowerShell、ISEを終了すると設定はリセットされます)
CurrentUser 現在のユーザー
LocalMachine コンピューターのすべてのユーザー

以下のコマンドレットで実行ポリシーを変更しましょう。

再度Get-ExecutionPolicyを実行すると

PS C:\Users\terad> Get-ExecutionPolicy
RemoteSigned

実行ポリシーがRomoteSignedに変更されました。

スクリプトを実行する

今、スクリプトの発走ゲートは開いた状態です。

実行すると…

PS C:\Users\terad\Desktop\sample> C:\Users\terad\Desktop\rename.ps1
ISEから実行しました!

コンソールに「ISEから実行しました!」のメッセージが表示されました!

まとめ

PowerShellはWindowsのほぼすべての機能を操作できる強力なスクリプトである代わりに、セキュリティの観点から実行ポリシーという制限=発走ゲートの開け閉めが必要になります

少し面倒ですが、一度分かってしまえば簡単ですね。

さあスクリプトが実行が制御できるようになりました!

次回はコマンドレット間で値の受け渡しができるパイプラインの説明をしながらファイルのリネームをやってきますよ!

最後までお読みいただきありがとうございました!

連載目次:Windowsのポチポチ業務を爆速化するPowerShell

Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。
  1. Windowsのポチポチ業務を爆速化するPowerShell、はじめのハードルぐーーんと下げてみます!
  2. Windowsのポチポチ業務を爆速化するPowerShell、キーボードを使わずササっと起動する方法
  3. Windowsのポチポチ操作を爆速化するPowerShellの絶対条件!ディレクトリとその移動をマスターしよう!
  4. Windowsのポチポチ業務を爆速化するPowerShell、コマンドレットを腹の底から理解する!
  5. Windowsのポチポチ業務を爆速化するPowerShell、オンラインヘルプでコマンドレットを使い倒す!
  6. Windowsのポチポチ業務を爆速化するPowerShell、統合開発環境ISEを紹介します!
  7. Windowsのポチポチ業務を爆速化するPowerShell、スクリプトを実行するための準備
  8. Windowsのポチポチ業務を爆速化するPowerShell、フォルダを作るスクリプトの作り方
  9. Windowsのポチポチ業務を爆速化するPowerShell、if文を使いフォルダの有無で処理を分岐させる方法

  投稿者プロフィール

teradoshプログラミングする福祉職
システムエンジニアとして5年勤務した後、高齢者デイサービスで4年間働いた異色の経歴(学生時代は水泳コーチ)。1986年生まれ。大阪府豊中市在住。2女の父。

プログラミングの経験を活かし、福祉現場の業務効率化に情熱を燃やしています!

お気軽にフォローしてくださいね。

コメント