そこで僕は、関数は別のスクリプトファイル ( 1 関数につき 1 ファイル ) に記述しています。プロファイルでは、それらのスクリプトファイルを実行することで関数をインポートしています。
以下はプロファイルに記述しているコードです。
Microsoft.PowerShell_profile.ps1
Set-Variable -Scope "Global" -Option "Constant" -Name "GlobalScripts" -Value "$PSHome\Scripts";
Set-Variable -Scope "Global" -Option "Constant" -Name "Scripts" -Value ("{0}\WindowsPowerShell\Scripts" -f [Environment]::GetFolderPath("MyDocuments"));
function Execute-Scripts
{
param ([String]$scriptsFolderPath)
if (Test-Path $scriptsFolderPath)
{
Get-ChildItem $scriptsFolderPath -Include "*.ps1" -Recurse -Force | % { &($_.FullName); };
}
}
Execute-Scripts $GlobalScripts;
Execute-Scripts $Scripts;
あとは、PowerShell のインストールフォルダ ( もしくは My Documents フォルダ内の WindowsPowerShell フォルダ ) 内に "Scripts" というフォルダを作成して、その中にスクリプトファイルを置いておけば、関数が自動でインポートされます。
なお、ファイルの中に書く関数は、function ブロックもちゃんと記述する必要があります。また、スコープを global に指定する必要があります。
例えば、"Hoge" と出力する Hoge 関数ならば以下のようになります。
Hoge.ps1
function global:Hoge
{
return "Hoge";
}
関数をプロファイル内にいくつも書いている人には、かなりお勧めです。是非試してみてください。 ( 既にやっている人もいそうだけど )
[ 関連記事 ]
Windows PowerShell プロファイル