1
如果以前已詢問過此問題,請致歉。如果是這樣的話PowerShell將收集對象作爲副本返回
我有建立組成員的對象數組的函數。我可以看到它在函數內工作正常,但返回對象的成員數量恰好是兩倍 - 嘗試了一個ArrayList,這更糟糕。可有人請解釋一下到底是怎麼回事....
function Get-MsolGroupMembers
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true, Position=0)]
[string]
$SearchString
)
$groups = Get-MsolGroup -SearchString $SearchString -MaxResults 1
$retObjs = @()
Write-Host -fore Yellow $groups.Count 'Group(s) found'
foreach ($group in $groups)
{
$groupGUID = $group.ObjectId
$groupDisplayName = $group.DisplayName
$groupEmail = $group.EmailAddress
$groupType = $group.GroupType
$groupMembers = Get-MsolGroupMember -GroupObjectId $groupGUID -All
foreach ($groupMember in $groupMembers)
{
$Properties = @{"GroupDisplayName"=$groupDisplayName;
"GroupEmail"=$grouEmail;
"GroupType"=$groupType;
"MemberDisplayName"=$groupMember.DisplayName;
"MemberEmail"=$groupMember.EmailAddress;
"MemberType"=$groupMember.GroupMemberType}
$Obj = New-Object -TypeName PSObject -Property $Properties
Write-Output $Obj | select GroupDisplayName,GroupEmail,GroupType,MemberDisplayName,MemberEmail,MemberType
$retObjs += $Obj
}
return $reObjs;
}
}
$members = Get-MsolGroupMembers -SearchString 'My Test Group'
$members.Count
謝謝,我可以刪除尾隨返回,但仍然將我的集合傳遞迴調用腳本。 – westerdaled
是的,當函數輸出時,集合仍然展開,所以它不會有任何區別。 – TheMadTechnician
謝謝,我有點困惑,因爲我認爲寫對象只是處理每個對象的內部人口。感謝您糾正我 – westerdaled