我正在使用以下代码尝试阻止移动设备访问交易所。
$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'
如何在不清除旧设备的情况下添加被阻止的设备?任何帮助将不胜感激。
答案 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=..}
方法