hack のためのネタ帳, etc,,,

状況

PowerShell で grep したい時に
<command> | oss | sls <pattern>
みたいなことするんだけど、oss て何だったっけ?と思い確認してみた所
> gcm oss

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        oss
となる一方で help 引くと Out-String が表示されるので
あれれ? Out-Scring の alias じゃないのに help は Out-String なんだ?
と言うことで、関数の内容を確認したかったのだが、どうすんだ?って。

解法

PowerShell function display」でググったところ、以下のページ

get-childitem function:*
みたいな記述を見かけた。

と言う事で Get-ChildItem で Function:* から定義済み関数が拾えるので、oss の ScriptBlock を確認すると良さげ。
確認してみると以下のようになっていた。
> ls Function:oss |% ScriptBlock

[CmdletBinding()]
param(
    [ValidateRange(2, 2147483647)]
    [int]
    ${Width},

    [Parameter(ValueFromPipeline=$true)]
    [psobject]
    ${InputObject})

begin
{
    try {
        $PSBoundParameters['Stream'] = $true
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('Out-String',[System.Management.Automation.CommandType
s]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters }
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process
{
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end
{
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
<#
.ForwardHelpTargetName Out-String
.ForwardHelpCategory Cmdlet
#>
つまり、「.ForwardHelpTargetName Out-String」が設定されていたので help で Out-String に飛ぶようになってるらしい。

あと、help about_Functions 確認してみると
(Get-ChildItem function:help).Definition

$function:help
のような方法も示されていた。

話は外れるが、
help about_Functions -online
出来ないのはなぜ?

因みに、以前に既に調査済みというオチも付いた。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます