我创建了一个小型 powershell 脚本,用于在用户不是特定 AD 组成员时禁用邮箱的主动同步。从我的 Windows 7 工作站的 Exchange Management Shell 运行此脚本时,该脚本运行正常。但它在 CAS 服务器的 EMS 上不起作用。
$groupname = "ActiveSync Users"
$groupidentity = $(Get-Group $groupname).Identity.DistinguishedName
Get-Mailbox -ResultSize unlimited |Set-CASMailbox -ActiveSyncEnabled $false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue
$users = Get-ADGroupMember $groupname | select -ExpandProperty name
foreach ($user in $users) {
Get-Mailbox $user | Set-CASMailbox -ActiveSyncEnabled $true
}
Get-Mailbox | Set-CASMailbox
代码的和Get-ADGroupMember
部分在 Exchange CAS 服务器上均失败。Get-Mailbox | Set-CASMailbox
列出警告,指出每个用户帐户的设置均未修改。Get-ADGroupMember
错误地认为是无法识别的 cmdlet。
看起来 Exchange 服务器要么存在权限错误,要么缺少某些依赖项,但我不确定在哪里可以查看缺少的内容。
答案1
您遇到的问题是Get-ADGroupMember
。您需要使用命令 加载 Active Directory 管理单元import-module ActiveDirectory
。您需要在 Exchange 服务器上安装“Windows PowerShell 的 Active Directory 模块”功能才能使其正常工作。
Get/Set 命令会向您发出警告,因为您的脚本执行以下操作:
- 禁用所有 ActiveSync 用户。
- 填充 $users(失败)
- 为 $users 中的用户启用 ActiveSync
由于您已经运行过一次脚本,因此步骤 1 已经完成。再次运行它会给您“无更改”警告。修复步骤 2,您的脚本将正常工作。请注意,对于已关闭 ActiveSync 的邮箱,您仍会收到该警告,但至少您不会像现在一样对每个邮箱都收到该警告。