如何在Exchange中使用Powershell阻止移动设备

时间:2019-12-26 16:12:36

标签: powershell mobile exchange-server

我正在使用以下代码尝试阻止移动设备访问交易所。

$deviceID = $mobileDevices[[int]$menuSelect].DeviceID
Set-CASMailbox -Identity $username -ActiveSyncBlockedDeviceIDs @{Add="$deviceID"}
$MobileDevices[[int]$menuSelect].DeviceAccessState = 'Blocked'

但是收到此警告:

WARNING: The command completed successfully but no settings of 'chris.domain/Domain Sites/Pre/John Tar' have been modified.

实际上没有任何东西被阻止。

如果我像下面那样运行代码,则它确实会阻止该单个设备,但会取消阻止之前被阻止的任何其他设备。

$deviceID = $mobileDevices[[int]$menuSelect].DeviceID
Set-CASMailbox -Identity $username -ActiveSyncBlockedDeviceIDs $deviceID
$MobileDevices[[int]$menuSelect].DeviceAccessState = 'Blocked'

如何在不清除旧设备的情况下添加被阻止的设备?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

那么您的$menuSelect是什么?您实际上是在某个位置上(在屏幕上,在GUI中)在某种菜单上找到某种菜单吗?当您运行脚本并进行选择时,$menuselect实际上填充了数字吗?如果是的话,$deviceID也会被填充吗?

使用Powershell IDE或VSCode或类似方法在第一行上创建一个断点,并在调试模式下运行它,并检查变量中的值。否则,请在脚本中添加一些输出行,以查看变量是否已填充。

$deviceID = $mobileDevices[[int]$menuSelect].DeviceID
write-host "selection = $menuselect - DeviceID = $DeviceID - User = $username"
Set-CASMailbox -Identity $username -ActiveSyncBlockedDeviceIDs @{Add="$deviceID"}
$MobileDevices[[int]$menuSelect].DeviceAccessState = 'Blocked'

如果输出看起来正常,则完全按照此处的命令运行Set-CasMailbox命令,但是将变量替换为在write-host或调试输出中看到的实际值。

顺便说一句,我怀疑是问题@{Add="$deviceID"}。如果看起来值还可以,如果不带引号运行它会怎样?

第二个命令删除所有先前阻止的设备的原因是ActiveSyncBlockedIds是一个多值属性,而第二个命令只是删除现有条目,而不是附加其他ID。这就是为什么需要使用@{Add=..}方法