通过登录批量获取会话名称以检查是否 RDP

问题描述 投票:0回答:1

我正在尝试检查登录的用户是否处于 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
batch-file session active-directory batch-processing rdp
1个回答
0
投票

您可以通过GPO设置“环回策略处理”来实现要求,这将允许用户根据计算机的OU位置获取GPO设置。因此,如果用户登录到 RDP 会话主机,用户将获得应用于计算机的策略,在本例中为 RDP 会话主机 OU。应用于这些服务器(TS 场)的 GPO 应包括帖子中上述的打印机设置和限制。当用户登录到这些服务器时,他们将不会有任何打印机连接,并且当他/她从 RDP 会话主机注销时,他们将继续有打印机连接。您可以设置替换/合并以进行环回处理。

参考:https://learn.microsoft.com/en-us/troubleshoot/windows-server/group-policy/loopback-processing-of-group-policy

© www.soinside.com 2019 - 2024. All rights reserved.