Wednesday, May 28, 2008

前回の「関数ファイルを作る(PowerShell 入門)」で、関数を作成して利用する方法を紹介しました。

しかし、前回の方法では、PowerShellを終了すると、せっかく登録された関数も次回起動時には無効になってしまうという問題があります。

今回は、関数をプロファイルに登録することで、PowerShell起動時に自動で登録されるようにする方法を紹介します。

まずは、プロファイルですが、これはPowerShell起動時に1度だけ読み込まれる特別なスクリプトファイルです。

このファイルは $Profile という自動変数に格納されています。

試しにコマンドラインで $Profileを確認してみましょう。

C:\Users\HIRO\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
PS C:\Users\HIRO>

コマンドラインで下記のように入力し、メモ帳でプロファイルを開いてみましょう。

PS C:\Users\HIRO> Notepad $Profile

もしも、過去にプロファイルを作成したことがない場合は、「ファイル C:\Users\HIRO\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1が見つかりません。 作成しますか?」と聞かれるので、「はい」を選択してください。

あとは、下記のように入力してMicrosoft.PowerShell_profile.ps1を保存します。

function funcA
{
    Write-Host "funcAです"
}

保存が終わったら、PowerShellを再起動し、funcAを実行してみましょう。

PS C:\Users\HIRO> funcA
funcAです

このように、プロファイルに関数を記述すると、毎回PowerShellに関数を手動で登録する必要がなくなります。

(スクリプトの実行にはセキュリティ設定が必要ですので、動作しない場合は「スクリプトファイルの作成(PowerShell 入門)」を参考に設定してください。)

しかし、多数の関数をMicrosoft.PowerShell_profile.ps1に記述するのはメンテナンスが大変です。

これを解決する方法としてよこけんさんのサイトの「プロファイル活用」でスマートな方法が紹介されています。

実は、私自身もこの方法を採用させていただいております。

この方法を使用すれば、前回の「関数ファイルを作る(PowerShell 入門)」で説明したように、関数をファイルに保存し管理が可能になります。

ただし、1点だけ注意していただきたいことがあります。

それは、プロファイルに記述する関数はスコープを指定しなくても問題ありませんが、ファイルに記述する関数はglobalスコープが必要であるということです。

Wednesday, May 28, 2008 10:31:14 PM (Tokyo Standard Time, UTC+09:00)  #    Comments [0]  |  Trackback
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: