Exchange Online中Set-AddressBookPolicy传变量AddressLists报错如何解决
解决方法
错误原因
Set-AddressBookPolicy的-AddressLists参数接受地址列表对象数组/地址列表标识字符串数组,你之前直接提取的.Id是ADObjectId类型数组,类型不匹配触发无效操作报错。- 你尝试的
-join ','操作会将数组转为单个逗号分隔字符串,不符合参数的多值数组要求,因此会触发其他类型错误。
正确实现方案
方案1(推荐):直接传递地址列表对象
直接筛选获取符合条件的地址列表对象后传入参数,无需额外类型转换:
# 筛选符合条件的地址列表对象 $AddressLists = Get-AddressList | Where-Object {$_.Identity -like "*Company_1*"} # 执行ABP配置 Set-AddressBookPolicy -Identity "Company1" -AddressLists $AddressLists ` -RoomList "C1_Rooms" -GlobalAddressList "C1_GAL" -OfflineAddressBook "C1_OAB"
方案2:显式传递字符串标识数组
如果需要使用字符串形式的标识,将每个标识显式转为字符串后组成数组传入即可:
# 筛选并将标识转为字符串数组 $AddressLists = (Get-AddressList | Where-Object {$_.Identity -like "*Company_1*"}).Identity.ToString() # 执行ABP配置 Set-AddressBookPolicy -Identity "Company1" -AddressLists $AddressLists ` -RoomList "C1_Rooms" -GlobalAddressList "C1_GAL" -OfflineAddressBook "C1_OAB"
内容的提问来源于stack exchange,提问作者IT M
相关产品推荐
相关产品推荐

