読者です 読者をやめる 読者になる 読者になる

今日の Monad 離れ業

すっかり Monad のドキュメントを読んだり Monad のブログを読んだりするのが趣味に…。

マニュアルだってオブジェクト

MSH D:\> (get-childitem -?).syntax

get-childitem [[-Path] System.String[]] [-Include System.String[]] 
[-Exclude System.String[]] [[-Filter] System.String]
[-Recurse [System.Boolean]] [-Force [System.Boolean]]
get-childitem [[-Path] System.String[]] [-Include System.String[]]
[-Exclude System.String[]] [[-Filter] System.String]
[-Name System.Management.Automation.SwitchParameter]
[-Recurse [System.Boolean]] [-Force [System.Boolean]]

get-childitem -? と普通に実行すると要するに man が出る。ただ、実はそれもオブジェクトなので、(get-childitem -?).syntax でマニュアルの syntax プロパティにアクセスできる。syntax プロパティとは要するに syntax が書いてある段落です。

こんな「んなアホな」的事態も含めて、Monad のコマンドが返してくるのはことごとくオブジェクトなので(返してこないでコンソールに出力するだけのコマンド等除く)、メンバに何があるか知らないと命に関わります。なので、get-member コマンドで調べる(下の結果は僕が見やすくトリムしてます)

MSH D:\> get-member -InputObject (get-childitem -?) `
>> | where {$_.MemberType -eq "NoteProperty"}
>>

   TypeName: MamlCommandHelpInfo

Name                 MemberType   Definition
 ----                 ----------   ----------
alertSet             NoteProperty System.Management.Automation.MshObject...
Category             NoteProperty System.String Category=Command
Component            NoteProperty  Component=null
description          NoteProperty System.Management.Automation.MshObject...
details              NoteProperty System.Management.Automation.MshObject...
examples             NoteProperty System.Management.Automation.MshObject...
Functionality        NoteProperty  Functionality=null
inputTypes           NoteProperty System.Management.Automation.MshObject...
MshSnapIn            NoteProperty System.Management.Automation.MshSnapIn...
Name                 NoteProperty System.String Name=get-childitem
nonTerminatingErrors NoteProperty System.Management.Automation.MshObject...
parameters           NoteProperty System.Management.Automation.MshObject...
relatedLinks         NoteProperty System.Management.Automation.MshObject...
returnValues         NoteProperty System.Management.Automation.MshObject...
Role                 NoteProperty  Role=null
Synopsis             NoteProperty System.String Synopsis=Retrieves the c...
syntax               NoteProperty System.Management.Automation.MshObject...
terminatingErrors    NoteProperty System.Management.Automation.MshObject...
xmlns:command        NoteProperty System.String xmlns:command=http://sch...
xmlns:dev            NoteProperty System.String xmlns:dev=http://schemas...
xmlns:maml           NoteProperty System.String xmlns:maml=http://schema...

これでマニュアルにどんな項目があるかわかる。コマンドの概要(synopsis)だけ読みたければ、(get-childitem -?).synopsis だし、引数の取り方を見たければ (get-childitem -?).parameters になる。