みなさんこんにちは、テラド(@terashin1226)です!
Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。
前回はPowerShellで関数を作ってスクリプトから呼び出す方法を方法をお伝えしました。
今回はPowerShellで作った関数をコンソールで登録して呼び出す方法をお伝えします。
コマンドレットのように自分で作った関数をコンソールから自由に呼び出しちゃいましょう。
それではいってみましょう!
前回のおさらい
前回は引数2つを加算した答えを返してくれる関数「Add-Number」を作成し、スクリプト内から呼び出しました。
以下のようなスクリプトです。
function Add-Number($num1,$num2){ $answer = $num1 + $num2 return $answer } Add-Number 1 2
このように関数自体とその呼び出しを1つのスクリプト内で記述しました。
スクリプトは上から順番に解釈されますので、実行すると
1 関数がPowerShellに登録される
2 登録された関数Add-Numberを呼び出す
という処理の流れとなっています。
スクリプト内で完結しているように思えますが、関数が一旦はPowerShellに登録されているということを覚えておいてください。
コンソールから関数を登録して呼び出す方法
では、関数「Add-Number」をPowerShellのコンソールで登録して呼び出す方法をお伝えしていきますよ!
まずは以下のスクリプトをISEのスクリプトウィンドウに入力し、デスクトップに「sample.ps1」という名称で保存してください。前回作成した関数の呼び出しの部分は削除してくださいね。
function Add-Number($num1,$num2){ $answer = $num1 + $num2 return $answer }
PowerShellに関数を登録する
さきほどご説明したとおり、まず関数をPowerShellに登録する必要があります。
登録方法は簡単で、関数を書いたスクリプトのフルパスをコンソールから入力するだけです。
エンターを押すと、なにも起こらずにプロンプトが再度表示されます。
登録が無事完了しているか、関数を呼び出して確かめてみましょう!
前回ご紹介した関数の呼び出し方は以下のとおりでしたね。コンソールから呼び出す場合もまったく同じです。
$num1に1、$num2に2を入力することにし、以下のように書きます。
Add-Number 1 2
コンソールで「Add-Number 1 2」として実行すると…
あれ、以下のようにエラーになってしまいました。
Add-Number : 用語 ‘Add-Number’ は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:1
+ Add-Number 1 2
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Add-Number:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
「用語 ‘Add-Number’ は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。」と書いてありますね。どうやら呼び出しがうまくいっていないようです。
実はコンソールから関数を呼び出すにはスコープと言われる設定を変更する必要があります。
globalキーワードでスコープを変更する
コンソールから関数を呼び出すにはもうひと手間、作業が必要です。
関数名の前にglobalキーワードを付与します。
処理内容
return 戻り値
}
globalキーワードを付与しない場合、関数を同一スクリプト内から呼び出すことは可能ですが…
コンソールなど外部から呼び出すことができません。
globalを指定することにより外部(コンソール、ほかのスクリプト)から呼び出しが可能になります。
このように関数を呼び出せる範囲のことをスコープといいます。
実行結果
globalキーワードを付与すると、スクリプトは以下の通りとなります。
function global:Add-Number($num1,$num2){ $answer = $num1 + $num2 return $answer }
では、globalキーワードを付与して呼び出しが可能となったところで再度コンソールにフルパスを入力して関数を登録してください。
その後にコンソールで関数名を途中まで入力すると…
入力補完機能により「Add-Number」が表示されました。正しく関数が登録されている証拠です。
最後まで入力し実行すると…
$answer(1+2の答え「3」)が表示されました!
今回ご紹介した方法では、PowerShellを終了しない限りは何度も関数を呼び出すことが可能です。ただし、PowerShellを終了すると登録された関数は削除されますのでご注意ください。(次回、PowerShellを終了しても関数の登録を保持する方法をご紹介します。)
まとめ
いかがだったでしょうか。
今回はPowerShellの関数をコンソールで登録して呼び出す方法をお伝えしました!関数をコンソールなど外部から呼び出すにはglobalキーワードでスコープを変更することが必要となります。
次回はコンソールからの関数の登録が不要となるプロファイルに関数を登録する方法をご紹介します!
最後までお読みいただきありがとうございました!
連載目次: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型