我在遇到與New-WebBinding時管道在對象中的問題。我有一個定義了5個屬性的對象:Name,Protocol,Port,IPAddress和HostHeader(New-WebBinding cmdlet中全部5個都支持Accept Pipeline輸入:ValueByPropertyName)。但是,當你在這個對象中管道時,它仍然會請求一個名稱:被提交。如果您想複製問題,請使用快速測試功能。如果在提示符下按回車鍵,它會成功處理對象,添加綁定。但提示本身將其作爲非交互式腳本進行分解。PowerShell新WebBinding管道問題與名稱屬性
我已經用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
}
期待看到這個答案。我也嘗試過使用'PSObject'和'PSCustomObject'的變體而沒有成功。很好的問題。 – Kev
它沒有出現Microsoft Connect現在正在爲任何版本的Powershell使用任何錯誤報告。所以我會留下這個最可能的錯誤,唯一的解決方法是遍歷你的對象在foreach中。我還沒有版本5,我想知道它是否已在最新版本中解決。 – Paolis
這在v5中表現相同。我確實反彙編了'New-WebBinding' cmdlet所在的'Microsoft.IIs.PowerShell.Provider'程序集,並且我們感興趣的屬性用'[Parameter(ValueFromPipelineByPropertyName = true)]'正確歸屬' – Kev