powershell get-distributiongroup成员

时间:2018-08-08 13:14:27

标签: powershell foreach

我试图将Office365中的通讯组的所有成员分成两个组。第一个组“ Precon”过滤特定组中的用户。下一个“办公室”组将成为成员所在的办公室通讯组。最终目标是,我希望获得precon组中每个成员的办公室位置。

我尝试了几件事,但是不知道我的语法是否正确,或者我尝试的方法是否按照我认为的方式工作。

到目前为止,这就是我所拥有的

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $cred -Authentication Basic -AllowRedirection

Import-PSSession $Session -DisableNameChecking

$groupmembers = foreach($g in Get-DistributionGroup -Filter {name -like "Precon"}) {
    Get-DistributionGroupMember -Identity $g.SamAccountName | select Name   
}

$office = foreach($o in Get-DistributionGroup -Filter {name -like "*Office"}) 
{
    Get-DistributionGroupMember -Identity $o.SamAccountName | select Name   
}

$match = $groupmembers |  ForEach {
    if ($_ -imatch $office){
      Write-Output $_ "matches"
    }
}

$match

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

输出是什么?

对于最后的代码块,我来看:

$match = $groupmembers |  where $office -contains $_

$match

答案 1 :(得分:0)

我找到了一种可行的方法

$precon = @()
foreach($i in Get-DistributionGroup -Filter {Name -like '*Precon'}) {
    $precon += ( Get-DistributionGroupMember -Identity $i.samAccountName | foreach {$_.Name} )
}

$office = @{}
foreach($i in Get-DistributionGroup -Filter {Name -like '*Office'}) {
    $office[$i.name] += ( Get-DistributionGroupMember -Identity $i.samAccountName | foreach {$_.Name} )
}

$uber = @()
foreach ($key in $office.Keys) {
    $preconOffice = $office[$key] | Where { $precon -Contains $_ }
    foreach ($name in $preconOffice) { $uber += ( New-Object -TypeName PSObject -Prop (@{'Office' = $key ;'Name' = $name}) ) }
}

$uber