C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2007/11/21 22:24
プロファイル内に関数を直書きしてると、だんだん行数がかさんできて、メンテナンスがしづらくなってきます。
そこで僕は、関数は別のスクリプトファイル ( 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 プロファイル
スポンサーサイト



タグ: .NET PowerShell