1
は、次の関数を考えてみましょう:関数パラメータのデフォルト値をプログラムで決定する方法はありますか?
function f {param($x = 42)}
$x
は42のデフォルト値を持っている私は、とりわけ、そのデフォルト値をパラメータ私はプログラム的にテストする機能の束を持っていると仮定します。私は、オブジェクトは、次のいずれかのコマンドを使用して返さ使用して発見することができていたものの他のもの:
Get-Item function:/f | % Parameters | % x | % Attributes
Get-Help f | % Parameters | % parameter
これらのコマンドの出力以下:
Position : 0
ParameterSetName : __AllParameterSets
Mandatory : False
ValueFromPipeline : False
ValueFromPipelineByPropertyName : False
ValueFromRemainingArguments : False
HelpMessage :
HelpMessageBaseName :
HelpMessageResourceId :
DontShow : False
TypeId : System.Management.Automation.ParameterAttribute
name : x
required : false
pipelineInput : false
isDynamic : false
parameterSetName : (All)
parameterValue : Object
type : @{name=Object}
position : 0
aliases : None
のように任意の手掛かりがあるように思えません。デフォルト値
関数パラメータのデフォルト値をプログラムで決定する方法はありますか?
'$((取得項目関数:/ F).ScriptBlock.Ast.Body.ParamBlock.Parameters.Where {$ _ Name.VariablePath.UserPath -eq 'X'。})DefaultValue.SafeGetValue。 () ' – PetSerAl
@PetSerAlそれは投票に値する。 – LotPings
ありがとう@PetSerAl。それは動作します。私はタイプミスを訂正できるように答えることができますか? – alx9r