PostionalBindingの役割のCmdletBindingAttribute
2022-02-08 23:13:55
前回はAdvanced FunctionのHelpURIについてお話しましたが、今日はもう一つの新機能、"PositionalBinding"についてお話します。
PositionalBinding パラメータは、メソッド内のパラメータの位置を決定するために使用され、$true または $false のいずれかに設定することができます。次に、Functionで何をするのかを見てみましょう。
Function Test-Positional
{
[CmdletBinding()]
Param
(
[Parameter()]
$StringData1,
[Parameter()]
$StringData2
)
Write-Host -Object $StringData1
Write-Host -Object $StringData2
}
Test-Positional "A" "B"
上の例と同じように、この関数でも、Functionを定義するときにいつもやっているように、パラメータ名を入力しなくてもエラーにならないようにしています。
ここでも、PositionalBindingの設定を併用するとどうなるかを見てみましょう。PositionalBindingを$Falseに設定すると、位置パラメーターバインディングが不要になります。
Function Test-Positional
{
[CmdletBinding(PositionalBinding=$False)]
Param
(
[Parameter()]
$StringData1,
[Parameter()]
$StringData2
)
Write-Host -Object $StringData1
Write-Host -Object $StringData2
}
Test-Positional "A" "B"
unbound positionパラメータを設定し、Positionを設定していないため、パラメータ名を入力しない場合、メソッドはパラメータ名が一致する位置が見つからないとプロンプトを出すので、$Falseを設定している場合は、動作させるためにパラメータ名を強制的に指定しなければならないことに注意してください。
Test-Positional : A positional parameter cannot be found that accepts argument
A positional parameter cannot be found that accepts argument 'A'.
At line:16 char:1
+ Test-Positional "A" "B"
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Test-Positional], Paramete
rBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Test-Positional
そこで、未束縛のパラメータ位置を設定する際には、そのパラメータごとに位置を指定することで、メソッドが対応するパラメータ値に問題なくマッチングするようにすればよいのです。
Function Test-Positional
{
[CmdletBinding(PositionalBinding=$False)]
Param
(
[Parameter(Position=0)]
$StringData1,
[Parameter(Position=1)] $StringData1, [Parameter(Position=1)]
$StringData2
)
Write-Host -Object $StringData1
Write-Host -Object $StringData2
}
Test-Positional "A" "B"
パラメータ位置が指定されていない場合、パラメータ名を手入力することで強制的に実行させることは確かに可能です。
Function Test-Positional
{
[CmdletBinding(PositionalBinding=$False)]
Param
(
[Parameter()]
$StringData1,
[Parameter()]
$StringData2
)
Write-Host -Object $StringData1
Write-Host -Object $StringData2
}
Test-Positional -StringData1 "A" -StringData2 "B"
関連
-
react error TypeError: 未定義のプロパティ 'setState' を読み取ることができません。
-
警告の削除: 異なるサイズの整数からポインタへのキャスト
-
eclipse left パッケージエクスプローラーのフォントサイズ設定
-
プログラム ld の解決策の 1 つが 1 の終了ステータスを返した
-
[問題ログ】コンパイル時にイニシャライザーの要素が定数でないエラーが発生する
-
error: 単項「*」の型引数が無効です(「int」を持つ) *__first = __tmp.
-
解決方法: 'chromedriver' 実行ファイルが PATH に存在する必要があります。
-
puttyでログインすると、ネットワークエラー:接続拒否が表示される
-
C++プログラミングの質問 面接の質問
-
mscorlib.dll で "TargetInvocationException" 型の例外が発生するが、ユーザーコードで処理されない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
GDI+でジェネリックエラーが発生したのを解決する
-
undefinedGitチュートリアル: ! [却下] master -> master (最初に取得) 解決策
-
デバッグアサーションに失敗しました
-
リソースの読み込みに失敗しました:サーバーは403(Forbidden)のステータスで応答しました。
-
pythonのpandas_datareaderパッケージの紹介
-
アプリケーションのPagerAdapterがPagerAdapter#notifyDatを呼び出さずにアダプタの内容を変更しました。
-
Pytorch が Python int が大きすぎて C の long に変換できないというエラーを報告する
-
C/C++学習メモ-アクティブな例外なしで呼び出されるterminate
-
Pythonの一般的なエラーとデバッグ方法 (2)
-
TensorFlowのエラー ValueError: xとyは同じサイズでなければならない