引数

2016-11-04 2 views
0

で最後と呼ばれる方法を取得することのが、私はこれを持っているとしましょう:引数

Function b 
{ 
    Param([string] $a, [string]$b) 

    (Get-PSCallStack | Select -First 1).InvocationInfo.Trim() 
} 

Function a 
{ 
    b "plip" "plop"; Write-Host "a" 
} 

cls 
a 

私はこのコードを含むファイルを実行すると、私は実際に私が取得したいと思い

b "plip" "plop"; Write-Host "a" 

を取得します:

b "plip" "plop"; 

したがって、基本的には、「b」というパラメータを「b」というパラメータで表示したいと思いますコード。私は正規表現でそれを達成しようとすることができます。 PowerShellによって提供されるより良い方法があるかどうか疑問に思っています。

+0

'InvocationInfo'は明らかに人間の消費のためのコマンドを強調' PositionMessage'は、している - 多分それはあなたの目的のために十分です?もしあなたが本当にしたいのであれば、それを実際に解析してコマンドを得ることができますが、明らかにそれは非常に醜いものです。 –

+1

@PetSerAl:なぜそれは答えではありませんか? –

+0

ありがとう、それは動作します。 – ssougnez

答えて

1

は、コマンドのスクリプトの位置を取得するためにInvocationInfoクラスのScriptPosition内部プロパティを使用することができます。

Function b 
{ 
    Param([string] $a, [string]$b) 

    [System.Management.Automation.InvocationInfo].InvokeMember(
     'ScriptPosition', 
     'GetProperty, Instance, NonPublic', 
     $null, 
     (Get-PSCallStack | Select -First 1).InvocationInfo, 
     $null 
    ).Text 
}