Powershell I';我正在尝试将Exchange 2016 on prem中的默认日历权限设置为AvailabilityOnly

Powershell I';我正在尝试将Exchange 2016 on prem中的默认日历权限设置为AvailabilityOnly,powershell,active-directory,exchange-server,Powershell,Active Directory,Exchange Server,这里是新手,如果不清楚,请提前道歉 我需要将默认日历权限设置为仅在Exchange 2016中可用,这是基于AD中的组成员身份。“我认为”我遇到了麻烦,因为我使用AD类从组中检索用户,但当我尝试使用数组在Exchange中应用更改时,我不断收到一个错误: 参数“Identity”。无法转换 “@{userPrincipalName=JohnDoe@ourdomain.com}“类型的值 “反序列化。选定。Microsoft.ActiveDirectory.Management.ADUser”到

这里是新手,如果不清楚,请提前道歉

我需要将默认日历权限设置为仅在Exchange 2016中可用,这是基于AD中的组成员身份。“我认为”我遇到了麻烦,因为我使用AD类从组中检索用户,但当我尝试使用数组在Exchange中应用更改时,我不断收到一个错误:

参数“Identity”。无法转换 “@{userPrincipalName=JohnDoe@ourdomain.com}“类型的值 “反序列化。选定。Microsoft.ActiveDirectory.Management.ADUser”到 类型 “Microsoft.Exchange.Configuration.Tasks.MailboxFolderIdParameter”

如何在Powershell 5.0中避免/绕过此错误

我使用
Get-ADGroupMember
然后使用
Get-AdUser
获取
UserPrincipalName
,然后将所有UserPrincipalName打包到一个数组中,以便在
set-mailboxfolderpermission
-identity
属性中使用

我正在从不同的组中获取多个用户,并将它们打包到一个数组中,以便

$Array1 = Get-ADGroupMember -Identity "AD Group1" | %{get-aduser $_.SamAccountName | select userPrincipalName} 

$Array2 = Get-ADGroupMember -Identity "AD Group2" | %{get-aduser $_.SamAccountName | select userPrincipalName} 

$upn=array1+array2
在测试过程中,我打印以确保获得所需的字符串

$upn

user1@ourdomain.com

user2@ourdomain.com

user3@ourdomain.com
到目前为止还不错

当我尝试更新帐户时,因此

Foreach ($employee in $upn) {
    Set-MailboxFolderPermission -AccessRights AvailabilityOnly *-Identity $employee* -User default
}
它再次返回错误

参数“Identity”。无法转换 “@{userPrincipalName=JohnDoe@ourdomain.com}“类型的值 “反序列化。选定。Microsoft.ActiveDirectory.Management.ADUser”到 类型 “Microsoft.Exchange.Configuration.Tasks.MailboxFolderIdParameter”


-Identity
参数需要文件夹名。文件夹名称应为:

所以,如果你有一个用户与约翰。smith@domain.com,命令应为:

设置MailboxFolderPermissions-Identity john。smith@domain.com:\Calendar-AccessRights AvailabilityOnly-用户默认值
要使此示例有效,请执行以下操作:

ForEach($upn中的员工){
设置MailboxFolderPermissions-Identity${employee}:\Calendar-AccessRights AvailabilityOnly-User Default
}
*{}不是必需的,但它有助于清楚地定义变量是什么


参数
-Identity
需要文件夹名。文件夹名称应为:

所以,如果你有一个用户与约翰。smith@domain.com,命令应为:

设置MailboxFolderPermissions-Identity john。smith@domain.com:\Calendar-AccessRights AvailabilityOnly-用户默认值
要使此示例有效,请执行以下操作:

ForEach($upn中的员工){
设置MailboxFolderPermissions-Identity${employee}:\Calendar-AccessRights AvailabilityOnly-User Default
}
*{}不是必需的,但它有助于清楚地定义变量是什么


所以我尝试了您描述的方法,但仍然出现错误;指定的邮箱“@{userPrincipalName”=joeuser@yourdomain.com}“不存在。@Shootinst8您确定邮箱存在吗?是否获取邮箱user@domain.com。可能是邮箱之外的某个收件人类型无法工作。请尝试直接运行cmdlet,而不是通过ForEach循环对其进行故障排除。它失败的唯一方式是:1)不是有效邮箱(您的错误表明了这一点),或2)您没有权限。此外,如果您在多域林中,则必须设置选项以显示所有域中的收件人:
set ADServerSettings-viewerentirefrest$True
@Dustn是的,我已仔细检查了它。单域林。以域管理员的身份运行,所以我尝试了您所描述的方法,但仍然得到一个错误;指定的邮箱“@{userPrincipalName”=joeuser@yourdomain.com}“不存在。@Shootinst8您确定邮箱存在吗?是否获取邮箱user@domain.com。可能是邮箱之外的某个收件人类型无法工作。请尝试直接运行cmdlet,而不是通过ForEach循环对其进行故障排除。它失败的唯一方式是:1)不是有效邮箱(您的错误表明了这一点),或2)您没有权限。此外,如果您在多域林中,则必须设置选项以显示所有域中的收件人:
set ADServerSettings-viewerentirefrest$True
@Dustn是的,我已仔细检查了它。单域林。以域管理员身份运行