1
2

More than 5 years have passed since last update.

PowerShellでprofile.ps1に定義した自作関数を一覧表示する

Last updated at Posted at 2016-04-03

$profileに書いた関数を一覧表示する方法。

>getFunc で以下のように表示される


CommandName    Help                                         Source
-----------    ----                                         ------
fclone         カレントディレクトリが同じconemuのタブを開く fclone{ $d = $pwd ConEmu.exe /Single -cmd "p...
profile-reload プロファイルスクリプトを再読込する           profile-reload{ . $PROFILE }

getFuncの定義は以下の通り。自分はprofile.ps1ファイルをdropboxに入れている つまりps1ファイルのフルパスにdropが入っている関数だけに制限をしている
source項目はおおまかにどんな処理か見れる。大まかなので、改行とかスペース、タブを減らす。ヘルプ用の構文を取り除く、先頭のfunctionの文字を取り除く。

function getFunc{
    $a = gci function: | ? ScriptBlock.File -like "" ;
    $list=New-Object -TypeName System.Collections.ArrayList
    for($i = 0;$i -lt $a.count ; $i++){
        if( $a[$i].ScriptBlock.File -match "drop" ){ # ここは任意の値に変更
            $source=$a[$i].ScriptBlock.Ast -replace "\n",""
            $source=$source -replace "<#[\S\s]+#>"," "
            $source=$source -replace "\s+"," "
            $source=$source -replace "^function "," "
            $helpObject = $h = Get-Help $a[$i].Name
            $list += [PSCustomObject]@{
                CommandName = $a[$i].Name
                Help = $helpObject.description.Text
                Source = $source
            }
        }
    }
    $list | Format-Table -AutoSize
}

helpの値はこうやって定義する。日本語OK。もちろんファイルはutf16

function profile-reload{
  <#
  .DESCRIPTION
  プロファイルスクリプトを再読込する
  #>
    . $PROFILE 
}

こんな感じで。

profile-reloadをしても変わらない、というか一度定義された関数は再度. $profileしても更新されないっぽい
次はこれをなんとかしたいかな

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2