我有一个办公室365组的列表。我想检查它们是否隐藏在全局地址列表中。出于某种原因,当我运行foreach循环时根本没有输出。请问,请指出我做错了什么。
以下是我与Exchange的关联方式:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session
这是我试过的:
#get list of o365 groups
$teams = Get-UnifiedGroup |Where-Object {$_.WelcomeMessageEnabled -like "False"}|select -ExpandProperty Alias
#check $teams type just to be on the safe side
$teams.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
#check content of $teams variable
$teams
AllEMEA
AmericasApps
AmericasAR
AmericasConnectivity
AnalystTeam
APACExtendedServices
APACGatewayMigration
APACMarketGateways
APACProfessionalServices
APACSales
当我逐个手动检查组时,它可以正常工作。
Get-UnifiedGroup -Filter {Alias -eq "AllEMEA"} | select DisplayName,hiddenfromaddresslistsenabled
DisplayName HiddenFromAddressListsEnabled
----------- -----------------------------
All EMEA False
但是,当我将$ team管道到foreach循环时,它会像处理数组一样挂起,但之后根本就没有输出。
>$teams | %{Get-UnifiedGroup -Filter {Alias -eq $_}} | select DisplayName,hiddenfromaddresslistsenabled
>
#I've tried this approach (which is as far as i know the same), but result is the same
>foreach ($team in $teams) {Get-UnifiedGroup -Filter {Alias -eq "$team"}} | select DisplayName,hiddenfromaddresslistsenabled
>
我希望看到一个群组列表及其 hiddenfromaddresslistsenabled 属性。任何帮助表示赞赏。
答案 0 :(得分:1)
您可以检查以下代码吗?
$teams = Get-UnifiedGroup | Where {($_.HiddenFromAddressListsEnabled -eq $True) -and ($_.WelcomeMessageEnabled -like $false)} | ft Name, Alias, HiddenFromAddressListsEnabled, WelcomeMessageEnabled
$teams.gettype() <# if you need to check the type #>
$teams
答案 1 :(得分:0)
这里的问题是-Filter
参数不接受管道输入。
Filter <string>
Required? true
Position? Named
Accept pipeline input? false
Parameter set name Filter
Aliases None
Dynamic? true
例如,我看到与Get-aduser -Filter
相同的行为,因此此处的解决方法是不使用-Filter
,而是使用-Identity
参数,该参数接受管道输入。
@Nevenka的答案也可以使用,但是如果有人会遇到相同的问题,我想发布此问题的根本原因。