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