newbie在这里,对不起,如果不清楚。
我需要根据AD的组成员资格在2016年的Exchangeyly中将默认日历权限设置为availapery。"我认为"我被交叉了,因为我正在使用广告类从组中检索用户,但是当我尝试使用数组应用交换中的更改时,我会遇到错误:
参数"身份"。无法转换 "@{userprincipalname = johndoe@ourdomain.com}"类型的值 " deserialized.selected.microsoft.activedirectory.management.aduser" to 类型 " microsoft.exchange.configuration.tasks.mailboxfolderidparameter"。
我如何避免/解决PowerShell 5.0中的此错误。
我使用的是Get-ADGroupMember
,然后使用Get-AdUser
获取UserPrincipalName
,然后将所有用户principalname的包装打包成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
}
再次返回错误
参数"身份"。无法转换 "@{userprincipalname = johndoe@ourdomain.com}"类型的值 " deserialized.selected.microsoft.activedirectory.management.aduser" to 类型 " microsoft.exchange.configuration.tasks.mailboxfolderidparameter"。
-Identity
参数期望文件夹名称。文件夹名称应该是:。
所以,如果您有John.smith@domain.com的用户,则命令应为:
Set-MailboxFolderPermissions -Identity john.smith@domain.com:Calendar -AccessRights AvailabilityOnly -User Default
为您的示例做这项工作:
ForEach ($employee in $upn) {
Set-MailboxFolderPermissions -Identity ${employee}:Calendar -AccessRights AvailabilityOnly -User Default
}
*{}不是必需的,但有助于清楚地定义什么是变量。
https://learn.microsoft.com/en-us/powershell/module/exchange/mailboxes/set-mailboxfolderperions?view= exchange-ps