デバイスIDまたは表示名のいずれかを渡して、それを処理する機能が必要です。次の例で2つの「パイプラインから受け入れる」パラメータを持つ関数
、私は、デバイスID($obj.ID | Test-Function
)が含ま顧客PowerShellのオブジェクトを渡したが、$DisplayName
と$Id
の両方がその値で終わります。
どのようにして正しいパラメータに値を強制しますか?
function Test-Function {
[CmdletBinding()]
Param (
[Parameter(
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true
)]
[string]$DisplayName
[Parameter(
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true
)]
[string]$Id
)
Begin {
#Code goes here
}
Process {
Write-Host "displayname is: $DisplayName" -ForegroundColor Green
Write-Host "displayname is: $Id" -ForegroundColor Green
}
}
私は非常にエレガントなこのソリューションを、好き。私はそれがあなたのためにどのように機能するかを見ていますが、私がテストオブジェクトを別々に作成すると、うまくいきません。私はNew-Objectコマンドレットを使ってオブジェクトを作成しています( '$ props = @ {Id = '1'; DisplayName = 'server1'}; $ object = new-object pscustomeobject -Property $ props') $ object.Id |テスト関数 '_Parameter setは指定された名前付きパラメータを使用して解決できません._何か間違っている必要があります。 – StackExchangeGuy