Powershell 脚本在 Win7 客户端上运行,但不在 Exchange CAS 服务器上运行

Powershell 脚本在 Win7 客户端上运行,但不在 Exchange CAS 服务器上运行

我创建了一个小型 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 命令会向您发出警告,因为您的脚本执行以下操作:

  1. 禁用所有 ActiveSync 用户。
  2. 填充 $users(失败)
  3. 为 $users 中的用户启用 ActiveSync

由于您已经运行过一次脚本,因此步骤 1 已经完成。再次运行它会给您“无更改”警告。修复步骤 2,您的脚本将正常工作。请注意,对于已关闭 ActiveSync 的邮箱,您仍会收到该警告,但至少您不会像现在一样对每个邮箱都收到该警告。

相关内容