web-dev-qa-db-ja.com

Powershellモジュールで「ヘルパー」関数を非表示にする方法

エンドユーザー向けのいくつかの関数と、関数によって呼び出されるがエンドユーザーによって呼び出されないいくつかの内部ヘルパー関数を持つモジュールxyがあります。

Get-Command -Module xy -CommandType function

モジュールフォルダにあるすべての機能を一覧表示します(例:get-fooおよびget-foo_helper

使用しているエンドユーザーからget-foo_helper関数を非表示にする方法はありますか?

Get-Command -Module tcaps -CommandType function
39
icnivad

私が行ったことの1つは、エクスポートする関数に動詞と名詞の命名規則を使用することですが、ヘルパー関数ではハイフンを省略します。

次に、export-modulemember *-*エクスポートしたいものだけをエクスポートします。

40
Mike Shepard

モジュールの下部にExport-ModuleMemberを追加するだけです。

モジュールに次の関数があるとします。

New-Function0
New-Function1
New-Function2
New-HelperFunction0

モジュールファイルの最後に次の行を追加します。

Export-ModuleMember -function New-Function0
Export-ModuleMember -function New-Function1
Export-ModuleMember -function New-Function2

このモジュールでImport-Moduleを実行すると、Export-ModuleMemberで定義された関数のみがインポートされます。

ここで、New-Function1のエイリアスもエクスポートしたいとします。これをモジュールの最後に追加するだけです。

Export-ModuleMember -alias nf1

これで、Import-Moduleを使用すると、定義した関数と、New-Function1のエイリアス(nf1)が読み込まれます。

36
JoeG

多くの場合、宣言された関数はスクリプトブロック(つまり無名関数)に置き換えることができます。

4
mjolinor

Export-ModuleMemberを使用するか、モジュールマニフェストを作成して、エクスポートされたコマンドを指定できます。 New-ModuleManifestを使用して、マニフェストファイルを作成できます。

4
Andy Schneider