ここでは、PowerShellで複数のパラメータを持つ関数を作成する際に問題が発生しています。私は4つのパラメータを持っていて、それらの値はPowerShellウィンドウのパイプラインまたは直接入力を介して渡すことができます。パイプラインまたは直接入力の複数のパラメータ
4つのパラメータをプロセスセクションで使用できるようにする方法がわかりません。ここで
は(Write-Host
セクションはもちろん、唯一のテストのためである)私が持っているものです。
function Set-NewDevEnv {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true, ValuefromPipelineByPropertyName=$true)]
[ValidateSet('IIS', 'SQL', 'SOLR', 'Vanilla')]
[string[]]$VMType,
[Parameter(Mandatory=$true, ValuefromPipelineByPropertyName=$true)]
[string[]]$StaticIP,
[Parameter(Mandatory=$true, ValuefromPipelineByPropertyName=$true)]
[string[]]$VMName,
[Parameter(Mandatory=$true, ValuefromPipelineByPropertyName=$true)]
[string[]]$VMDNSName
)
Begin {}
Process {
Write-Host "VMType is $VMType ; StaticIP is $StaticIP ; VMName is $VMName; and VMDNSName is $VMDNSName"
}
私はこれを使用する場合は、直接コマンドライン入力、すなわちでパイプライン入力で正常に動作しますが、ありません。
Set-NewDevEnd -VMType "SQL","IIS" -StaticIp "192.168.0.1","192.168.0.2" -VMName "Testing1","Testing2" -VMDNSName "Testing1","Testing2"
私は通常、サポートすることを知っている
VMType is SQL IIS ; StaticIP is 192.168.0.1 192.168.0.2 ; VMName is Testing1 Testing2 ; and VMDNSName is Testing1 Testing2
を取得しています直接入力とパイプライン入力の両方で、foreach
ループをprocess
セクションに追加する必要がありますが、複数のパラメータを使用してforeach
ループを使用するにはどうすればよいですか?
ありがとう! Ansgarとあなたはどちらも同じ答えを得ていましたが、カスタムオブジェクトを使用することで、私はVMwareの新しいVMを構築するためにこれらの値を特に呼び出すことにします。ご協力いただきありがとうございます! :) –
あなたは大歓迎です:) –