そこで僕は、関数は別のスクリプトファイル ( 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 プロファイル
CodeZineでの紹介を通じて
拝見させて頂きました。
参考にさせて頂きます。
また冒頭にある
「つーかコメント欲しい(´・ω・`)」
という記載が最近ブログを始めた自分にも
当てはまり、とても共感できたので
コメントさせて頂きました。
これからも頑張ってください!
2016.01.20 23:07 URL | TWITF #SZrr04ic [ 編集 ]
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/186-57715aa7