[英]add data to an array powershell
我不確定為什么輸出無法正常工作。 有人可以請教。 從本質上講,該陣列有效,除了1個主要問題。 每次將新對象添加到數組時,它都會使用最后輸入的對象替換數組中的所有先前對象。
我得到了對象數組,我只是希望它向數組中添加新的數據對象,而不是替換所有先前的條目並添加新的數據對象。
我不知道我在做什么錯。
$RptInfo = New-Object Object -TypeName PSObject
Add-Member -MemberType NoteProperty -Name Counted -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name ItemName -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name ItemType -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name LineURI -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name RegistrarPool -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name Identity -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name Office -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name OfficeName -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name DisplayName -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name Location -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name VoicePolicy -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name DialPlan -Value "" -InputObject $RptInfo
[array]$RptArray = @()
$VoicePolicy_Table = Get-CsUser | Where {$_.EnterpriseVoiceEnabled -eq $true} | Sort-Object -Property VoicePolicy | Group-Object -Property VoicePolicy, 'Voice Policy'
$DialPlan_Table = Get-CsUser | Where {$_.EnterpriseVoiceEnabled -eq $true} | Sort-Object -Property DialPlan | Group-Object -Property DialPlan, 'Dial Plan'
foreach ($VP in $VoicePolicy_Table) {
$RptInfo.Counted = $VP.Count
$RptInfo.ItemName = $VP.Name
$RptInfo.ItemType = 'Voice Policy'
$RptArray += $RptInfo
}
ForEach ($RPT in $RptArray) {
$RPT.ItemName
}
問題是當您這樣做時正在發生什么:
$RptArray += $RptInfo
您可能會認為$RptInfo
是值類型,並且您正在將新值復制到數組。
$RptInfo
實際上是一個引用 。 在循環內部,您只需修改現有對象,然后將對該單個對象的另一個引用添加到數組中。
這可能起作用:
function New-ReportInfo
{
$RptInfo = New-Object Object -TypeName PSObject
Add-Member -MemberType NoteProperty -Name Counted -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name ItemName -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name ItemType -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name LineURI -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name RegistrarPool -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name Identity -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name Office -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name OfficeName -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name DisplayName -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name Location -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name VoicePolicy -Value "" -InputObject $RptInfo
Add-Member -MemberType NoteProperty -Name DialPlan -Value "" -InputObject $RptInfo
$RptInfo
}
[array]$RptArray= @()
foreach ($VP in $VoicePolicy_Table)
{
$RptInfoCopy = New-ReportInfo
$RptInfoCopy.Counted = $VP.Count
$RptInfoCopy.ItemName = $VP.Name
$RptInfoCopy.ItemType = 'Voice Policy'
$RptArray += $RptInfoCopy
}
或者,如果您喜歡管道系統
$RptArray = ($VoidPolicy_Table | % {
$RptInfoCopy = New-ReportInfo
$RptInfoCopy.Counted = $_.Count
$RptInfoCopy.ItemName = $_.Name
$RptInfoCopy.ItemType = 'Voice Policy'
$RptInfoCopy
})
對我而言,迭代$ VoidPolicy_Table並一步構建$ RptArray並填充這三個屬性看起來更加嚴格:
$VoicePolicy_Table = Get-CsUser | Where {$_.EnterpriseVoiceEnabled -eq $true} | Sort-Object -Property VoicePolicy | Group-Object -Property VoicePolicy, 'Voice Policy'
$DialPlan_Table = Get-CsUser | Where {$_.EnterpriseVoiceEnabled -eq $true} | Sort-Object -Property DialPlan | Group-Object -Property DialPlan, 'Dial Plan'
$RptArray = ForEach ($VP in $VoicePolicy_Table) {
[PSCustomObject]@{
Counted = $VP.Count
ItemName = $VP.Name
ItemType = 'Voice Policy'
LineURI = ""
RegistrarPool = ""
Identity = ""
Office = ""
OfficeName = ""
DisplayName = ""
Location = ""
VoicePolicy = ""
DialPlan = ""
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.