パラメータを持つスクリプトがあります。スクリプトのデバッグを容易にするために、私はすべての変数をリストするためにネット上にある小さな関数を作成します。これを行うには、既存の変数をすべてスクリプトの先頭に置いてから、パラメータを取得する前と後で記録された変数を比較する関数を作成します。パラメータがパラメータより大きい場合、パラメータを宣言することはできません
とその関数をparam
PowerShellでは、既定値を設定するすべてのパラメータに対して次のエラーが表示されます。この回避策はとにかくありますか? …バグ?それがバグでなければ、どうしてこんなふうに振る舞うのですか?私はその点を見ない。
割り当て式が無効です。代入演算子への入力は、変数またはプロパティのような代入を受け入れることができるオブジェクトでなければなりません( など)。
# Array and function to debug script variable content
$AutomaticVariables = Get-Variable
function check_variables {
Compare-Object (Get-Variable) $AutomaticVariables -Property Name -PassThru |
Where -Property Name -ne "AutomaticVariables"
}
param(
[String]$hostname,
[String]$jobdesc,
[String]$type = "standard",
[String]$repo,
[String]$ocred,
[String]$site,
[String]$cred = "SRC-$($site)-adm",
[String]$sitetype,
[String]$room,
[String]$chsite = "chub"
)
# TEST - Display variables
check_variables
は、私が言うべきことをたとえ私は単純な変数宣言をparamの前にx = 1と同じように愚かにする。振る舞いは同じである。つまり、Get-Variableや関数には関係しません。 paramの前のものはすべて同じ結果を返します。 –
これはバグではありません。パーサを書く人の人生を楽にするために、言語がどのように設計されているかです。 –
どのようにパラメータの前に設定したい変数を扱うのですか? Get-Variable Insideパラメータを追加しようとしましたが、他のすべてのパラメータが含まれています。それは順番に設定されていないようです。 –