我的目標是獲取所有組設定,并添加每個組的組成員總數以及每個組的所有者、管理員總數。
任何一個陣列都可以更大,也可以相等。
我從獲取組成員數開始。
$GroupMembersCount = gam print groups domain <domain.com> members managers owners countsonly | ConvertFrom-Csv
然后我得到每個組的設定
$GroupSettings = gam print groups settings | ConvertFrom-Csv
兩個陣列共享 email 屬性,僅此而已。這$GroupMembersCount只是對所有成員的計數以及他們在每個組中擁有的權利。好像
email, manager, member
address.com, 1, 5
newaddress.com, 0,0
anotheraddress,3,3
etc...
另一個陣列$GroupSettings有 30 個列標題,一個標題是電子郵件地址,其他標題是一堆,true or false具體取決于組的設定。
我想將兩個陣列合并為 1。
我知道我需要做一些事情,比如創建一個新陣列,但我遇到的問題是如何組合它們,因為我不知道哪個會更大?
$result = $null
$result = $GroupSettings $GroupMembersCount | Select-Object -Unique
以上沒有幫助
$Max = $null
$Max = ($GroupSettings.Count, $GroupMembersCount.count | Measure-Object -Maximum).Maximum
$resultsarray = $null
$resultsarray = For ($i = 0, $I -lt $max, $I ) {
do stuff
}
如果我做類似上面的事情,我將索引哪個陣列來獲取它們?
最終結果將告訴我每個組有哪些設定、成員總數、經理總數和所有者總數。
我需要這個,以便我可以過濾沒有所有者和管理員的組以及其他關鍵設定
uj5u.com熱心網友回復:
使用哈希表根據電子郵件地址“索引”第一個資料集:
$GroupMemberCount = gam print groups domain <domain.com> members managers owners countsonly | ConvertFrom-Csv
$GroupMemberCountByEmail = @{}
$GroupMemberCount |ForEach-Object {
$GroupMemberCountByEmail[$_.email] = $_
}
現在我們可以使用Select-Object基于email屬性將相關計數附加到每個組設定物件:
$result = $GroupSettings |Select *,@{Name='MemberCount';Expression={[int]$GroupMemberCountByEmail[$_.email].member}},@{Name='ManagerCount';Expression={[int]$GroupMemberCountByEmail[$_.email].manager}}
uj5u.com熱心網友回復:
上面解釋了答案,在這里我將分解我為遇到類似問題的任何人所做的和學到的東西。
我做了什么:
$GroupMembersCount = $null
$GroupMembersCount = gam print groups domain <domain.com> members managers owners countsonly | ConvertFrom-Csv
$GroupSettings = $null
$GroupSettings = gam print groups settings | ConvertFrom-Csv
$GroupMemberCountByEmail = @{}
$GroupMembersCount | ForEach-Object {
$GroupMemberCountByEmail[$_.email] = $_
}
$GroupSettings | Select-Object *,
@{
Name = 'MembersCount'
Expression = { [int]$GroupMemberCountByEmail[$_.email].MembersCount }
},@{
Name = 'ManagersCount'
Expression = { [int]$GroupMemberCountByEmail[$_.email].ManagersCount }
},@{
Name = 'OwnersCount'
Expression = { [int]$GroupMemberCountByEmail[$_.email].OwnersCount }
} |
Export-Csv 'c:\temp\groups.csv' -NoTypeInformation -Encoding UTF8
以上作業。第一部分,@Mathias讓我構建的,是一個哈希表。
美妙之處在于$result,在這里,Mathias 使用了計算屬性。該$result行的一個關鍵點如下:
@{
Name = 'ManagersCount'
Expression = { [int]$GroupMemberCountByEmail[$_.email].ManagersCount }
}
每個計算屬性的尾部,如.managerscount部分必須是上面創建的散列中的值。
這里有很多我不明白的地方,但是,如果你希望它會像它對我一樣引導你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/405505.html
標籤:
上一篇:將陣列中的值放入另一個陣列特定列
下一篇:下次運行腳本時中間名值仍然存在
