none
作成したfunctionにDefinitionを設定したい RRS feed

  • 質問

  • お世話になります。

    functionを作成し、.psm1でモジュール化しました。

    Get-Commandで作成したfunctionを参照すると、表示されますが、

    「Definition」部分に「パラメータ」が表示されていたり、コードが数行表示されていたりと、規則性がよく分かりません。

    ここをfunction側で設定することは可能でしょうか。

    2016年8月19日 8:32

回答

  • 対象となる関数が含まれているモジュールがロードされているか否かで、Get-Command実行時のDefinitionの表示が変化するようです。

    モジュールがロードされているかどうかは、Get-Moduleコマンドレットを実行すると分かります。

    なお、

    Get-Command -CommandType Function | Format-List Name, Definition

    とした場合は、モジュールはロードされないので、Definitionは空白となりますが、

    Get-Command -Module モジュール名 | Format-List Name, Definition

    Get-Command -Name 関数名 | Format-List Name, Definition

    のように実行すると、Get-Commandを呼び出しただけで、対象のモジュールがロードされるため、Definitionには関数本体のコードが表示されます。

    以上の挙動はv5.1で確認したものですが、他のバージョンだとまた違うかもしれません。

    • 回答としてマーク zenkou77 2016年8月22日 0:26
    2016年8月19日 10:30
    モデレータ

すべての返信

  • 対象となる関数が含まれているモジュールがロードされているか否かで、Get-Command実行時のDefinitionの表示が変化するようです。

    モジュールがロードされているかどうかは、Get-Moduleコマンドレットを実行すると分かります。

    なお、

    Get-Command -CommandType Function | Format-List Name, Definition

    とした場合は、モジュールはロードされないので、Definitionは空白となりますが、

    Get-Command -Module モジュール名 | Format-List Name, Definition

    Get-Command -Name 関数名 | Format-List Name, Definition

    のように実行すると、Get-Commandを呼び出しただけで、対象のモジュールがロードされるため、Definitionには関数本体のコードが表示されます。

    以上の挙動はv5.1で確認したものですが、他のバージョンだとまた違うかもしれません。

    • 回答としてマーク zenkou77 2016年8月22日 0:26
    2016年8月19日 10:30
    モデレータ
  • v4.0で試しましたが、「Get-Command -Module モジュール名」で、本体のコードが全て表示されることを確認しました。

    これだと加工すれば必要なところだけ切り取れそうなので、簡易ヘルプとして利用できそうです。

    回答ありがとうございました。

    2016年8月22日 0:26