Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。
前回の記事はこちらです。
前回は統合開発環境ISEでPowerShellのスクリプトを保存するところまでご説明しました。
PowerShellはWindowsのほぼすべての機能を操作できる強力なCUIであるため、デフォルトの設定ではスクリプトを実行することができません。
スクリプトの実行を制御する実行ポリシーというステータスを変更する必要があるんです。
本記事を読んで実行ポリシーについて理解し、PowerShellのスクリプトを自在に実行できるようになりましょう!
デフォルトではスクリプトを実行できない
前回保存したスクリプトは以下の通りです。
Write-Host "ISEから実行しました!"
スクリプトを実行するにはISEのツールバーにある三角の実行マークをクリックするか、F5を押します。
このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\terad\Desktop\sample.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
+ CategoryInfo : セキュリティ エラー: (: ) []、ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnauthorizedAccess
あれ、セキュリティエラーでファイルの読み込みができませんでした。
デフォルトの設定では自分が作ってローカルに保存したスクリプトすら実行できないんです…!
スクリプトの実行を制御する実行ポリシーとは
スクリプトを実行するには、実行ポリシーを変更する必要があります。
実行ポリシーはスクリプトの発走ゲートのような役割を果たします。そう、競馬でカッシャン!と開くゲートのことです。
条件を満たしている場合にゲートが開きスクリプトの実行が可能になる、というようなイメージを持ってください。
実行ポリシーを確認する
現在設定されている実行ポリシーを確認しましょう。
Get-ExecutionPolicyコマンドレットで、現在設定されている実行ポリシーを確認できます。
PS C:\Users\terad> Get-ExecutionPolicy
Restricted
実行ポリシーはRestricted=すべてのスクリプトが実行不可となっています。だからセキュリティエラーになってしまったんですね。
PowerShellのスクリプトはWindowsのほぼすべての機能を操作できる強力なCUI、セキュリティの観点からデフォルトでは実行不可となっています。
実行ポリシーを変更する
さあ、スクリプトを実行するために発走ゲートを開けてあげましょう!
Set-ExecutionPolicyコマンドレットで、実行ポリシーを変更できます。
今回実行ポリシーの種類には自分で作成しローカルに保存したスクリプトが実行可能なRemoteSignedを設定します。
実行ポリシーには以下の種類があります。
実行ポリシーの種類 | 実行できるスクリプト |
---|---|
Restricted | スクリプトの実行を行いません |
AllSigned | 署名付スクリプト |
RemoteSigned | 署名付スクリプト、または自分で作成しローカルに保存したスクリプト |
Unrestricted | すべてのスクリプト、ただしインターネットからダウンロードされた未署名のスクリプトを実行する場合、実行するかどうか確認されるのでユーザーが明示的に許可した場合に実行される |
Bypass | 何もブロックされず、警告もメッセージも表示されません |
Undefined | 現在のスコープから割り当てられている実行ポリシーを削除します |
Scopeパラメータを使えば、実行ポリシーの適用範囲を指定できます。
今回は適用範囲が現在のユーザーとなるCurrentUserを設定します。
Scopeには以下の種類があります。
Scopeの種類 | 実行できるスクリプト |
---|---|
Process | 現在のWindowsPowerShellプロセス(PowerShell、ISEを終了すると設定はリセットされます) |
CurrentUser | 現在のユーザー |
LocalMachine | コンピューターのすべてのユーザー |
以下のコマンドレットで実行ポリシーを変更しましょう。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
再度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を使った効率化の方法をお伝えしています。- Windowsのポチポチ業務を爆速化するPowerShell、はじめのハードルぐーーんと下げてみます!
- Windowsのポチポチ業務を爆速化するPowerShell、キーボードを使わずササっと起動する方法
- Windowsのポチポチ操作を爆速化するPowerShellの絶対条件!ディレクトリとその移動をマスターしよう!
- Windowsのポチポチ業務を爆速化するPowerShell、コマンドレットを腹の底から理解する!
- Windowsのポチポチ業務を爆速化するPowerShell、オンラインヘルプでコマンドレットを使い倒す!
- Windowsのポチポチ業務を爆速化するPowerShell、統合開発環境ISEを紹介します!
- Windowsのポチポチ業務を爆速化するPowerShell、スクリプトを実行するための準備
- Windowsのポチポチ業務を爆速化するPowerShell、フォルダを作るスクリプトの作り方
- Windowsのポチポチ業務を爆速化するPowerShell、if文を使いフォルダの有無で処理を分岐させる方法
- Windowsのポチポチ業務を爆速化するPowerShell、ForEach-Objectで配列の全要素を処理する方法
- Windowsのポチポチ業務を爆速化するPowerShell、パイプラインを使いコマンドレット間で値を引き渡す方法
- Windowsのポチポチ業務を爆速化するPowerShell、ファイルを別フォルダにコピーし名称を変更する方法
- Windowsのポチポチ業務を爆速化するPowerShell、ファイル名を変更する方法
- Windowsのポチポチ業務を爆速化するPowerShell、正規表現で複雑なファイル名変更をする方法
- Windowsのポチポチ業務を爆速化するPowerShell、タスクスケジューラでスクリプトを決まった日時に起動する方法
- Windowsのポチポチ業務を爆速化するPowerShell、ファイルをバックアップするスクリプトの作り方
- Windowsのポチポチ業務を爆速化するPowerShell、関数を作ってスクリプトから呼び出す方法
- Windowsのポチポチ業務を爆速化するPowerShell、関数をコンソールで登録して呼び出す方法
- Windowsのポチポチ業務を爆速化するPowerShell、短いワードでサッと関数を呼び出すエイリアスの使い方
- Windowsのポチポチ業務を爆速化するPowerShell、関数やエイリアス保存場所のドライブを紹介します
- Windowsのポチポチ業務を爆速化するPowerShell、elseifで日付の元号を判定する方法
- Windowsのポチポチ業務を爆速化するPowerShell、日付を操るDatetime型