我正在尝试检查登录的用户是否处于 RDP 会话中。登录时,将触发用户批处理中的 AD 登录脚本。如果用户处于 RDP 会话中,则不应连接打印机和网络驱动器。
如果我执行此操作:
query session %username%
,则会显示正确的输出。我的问题是我无法使用 if 语句,也无法将输出写入变量以检查“RDP”是否在 SESSIONNAME 字段中。
输出示例:
C:\>query session %username%
SESSIONNAME USERNAME ID STATE TYPE DEVICE
>rdp-tcp#1 Administrator1 0 active wdcon
我还尝试使用 find 删除第一行并将输出写入变量 var。
@echo off
for /f "delims=" %%A in ('query session %username% ^| find "rdp"') do set "var=%%A"
echo %var%
pause
您可以通过GPO设置“环回策略处理”来实现要求,这将允许用户根据计算机的OU位置获取GPO设置。因此,如果用户登录到 RDP 会话主机,用户将获得应用于计算机的策略,在本例中为 RDP 会话主机 OU。应用于这些服务器(TS 场)的 GPO 应包括帖子中上述的打印机设置和限制。当用户登录到这些服务器时,他们将不会有任何打印机连接,并且当他/她从 RDP 会话主机注销时,他们将继续有打印机连接。您可以设置替换/合并以进行环回处理。