在对象中进行管道传输时,我遇到了 New-WebBinding 的问题。我有一个对象,它定义了 5 个属性:名称、协议、端口、IPAddress 和 HostHeader(New-WebBinding cmdlet 支持所有 5 个属性作为 Accept Pipeline 输入:ValueByPropertyName)。但是,当您通过管道输入此对象时,它仍会请求提交 Name:。如果您想复制问题,这是一个快速测试功能。如果您在提示符处按 Enter,它会成功处理对象并添加绑定。但提示本身将其作为非交互式脚本破坏。
我已经用 PS v3 和 PS v4 对此进行了测试。
我很确定我做这一切都是正确的,但想确保没有我可能忽略的东西。现在我只是在 foreach 循环中迭代我的对象集合,它没有这个问题,但想看看这是否是我应该报告的错误。
function Test-WebBinding{
[CmdletBinding()]
Param()
$testBindingCol = @()
$testBinding1 = New-Object System.Object
$testBinding1 | Add-Member -MemberType NoteProperty -Name Name -Value 'Default Web Site'
$testBinding1 | Add-Member -MemberType NoteProperty -Name Protocol -Value 'https'
$testBinding1 | Add-Member -MemberType NoteProperty -Name Port -Value '4000'
$testBinding1 | Add-Member -MemberType NoteProperty -Name IPAddress -Value '*'
$testBinding1 | Add-Member -MemberType NoteProperty -Name HostHeader -Value 'Test4000'
$testBindingCol += $testBinding1
$testBinding2 = New-Object System.Object
$testBinding2 | Add-Member -MemberType NoteProperty -Name Name -Value 'Default Web Site'
$testBinding2 | Add-Member -MemberType NoteProperty -Name Protocol -Value 'http'
$testBinding2 | Add-Member -MemberType NoteProperty -Name Port -Value '4001'
$testBinding2 | Add-Member -MemberType NoteProperty -Name IPAddress -Value '*'
$testBinding2 | Add-Member -MemberType NoteProperty -Name HostHeader -Value 'Test4001'
$testBindingCol += $testBinding2
$testBindingCol | New-WebBinding
}