【问题标题】:How to identify users which are connected to a windows server via remote desktop如何识别通过远程桌面连接到 Windows 服务器的用户
【发布时间】:2009-02-18 21:31:09
【问题描述】:

在我的工作场所,我们有用于进行测试的实验室机器。

预留机器进行测试的标准程序是在办公室走动,以确保没有人在使用机器。

这是非常低效且耗时的。

起初,我建立了一个网页,人们可以在其中预订实验室机器,但没有人保持页面更新,结果证明它毫无用处。

我终于找到了使用Microsoft log parser 的解决方案,并想将其分享给堆栈溢出社区。

这是一个在机器上运行的批处理文件,因此用户可以识别最后使用机器的用户并轻松地向他们发送 IM 询问机器是否空闲。

有更好的解决方案吗?

【问题讨论】:

  • 你问了一个问题,然后在 2 分钟后回答了它……你在写博客吗?
  • 这实际上被网站创建者认为是可以接受的。我认为这个问题应该更有问题,但是仅仅提出一个问题来自己回答是完全可以的。
  • 我什至不认为它需要是一个维基。这不是民意调查,也不是 SO 元讨论。
  • 我对这种事情没有异议。他有一个编程问题,自己解决了,并决定分享。如果我今天有更多的选票,我会投票给他。
  • @bthb:我也觉得这很奇怪。事实上,我怀疑 OP 可能一直在玩这个网站(即问一个问题,然后用另一个帐户登录以回答问题并收集代表),但中途搞砸了。但是,我认为 EBGreen 是正确的 :)

标签: windows logging scripting remote-desktop event-log


【解决方案1】:

使用内置命令qwinsta(查询Win Station)来确定哪些会话(包括控制台)处于活动状态或非活动状态(断开连接),然后对给定的信息(信任 krusty.ar 顺便说一句已经链接了)。

如果您觉得有人在滥用相关机器,请参阅 rwinsta 以将他们的会话彻底遗忘...

【讨论】:

    【解决方案2】:

    您需要安装Microsoft Log Parser

    然后创建以下2个文件

    TSLoginsDetails.sql

    SELECT 
          timegenerated, 
          EXTRACT_TOKEN(Strings,1,'|') AS Domain, 
          EXTRACT_TOKEN(Strings,0,'|') AS User, 
          EXTRACT_TOKEN(Strings,3,'|') AS SessionName,
          EXTRACT_TOKEN(Strings,4,'|') AS ClientName,
          EXTRACT_TOKEN(Strings,5,'|') AS ClientAddress,
          EventID
    FROM Security 
    WHERE EventID=682 
    ORDER BY timegenerated DESC
    

    TSLogins.bat

    echo off
    cls
    c:
    cd "c:\Program Files\Log Parser 2.2\"
    logparser.exe file:TSLoginsDetails.sql -o:DATAGRID
    

    现在,通过将此批处理文件放在桌面上,用户可以查看谁是最后登录的人,并通过 IM 与他们联系以验证他们是否已完成。

    【讨论】:

    • 展开它,以便在您登录时,如果不是当前用户最后登录,请设置警报以联系正确的人。 (启动 IM,预填电子邮件,使用其他通知协议。)如果是当前用户,什么也不做。
    • 这不要求运行批处理文件的人已经登录到有问题的机器上吗?换句话说,可能已经闯入了其他用户的会话?
    • 为什么不让您的用户使用他们自己的用户帐户登录这些实验室机器?然后当其他人尝试登录时,Windows 只会告诉你另一个会话当前处于活动状态,它会告诉你谁登录了。
    • bslorence 我们登录控制台。我们没有在工作场所设置域。只要您不停止其他人开始的负载测试,只要您切断某人的会话就不会被认为是有害的。
    • 我明白了。您是在这些实验室机器上运行您开发的软件,还是它们只是为单独运行的服务器测试客户端?我只是问,因为听起来你们可能也都以管理员权限登录到测试机器。
    【解决方案3】:

    如何将日志文件中的信息发布到网站上,告诉谁当前正在使用该机器。

    1. 在他们登录时检查并通知。
    2. 更新了您之前制作的“谁在使用机器”页面。
    3. 运行 AT 作业,每隔几个小时检查一次执行任务的人员。

    【讨论】:

    • 好主意,我会调查一下。
    【解决方案4】:

    完全开箱即用:

    您可以在您的服务器和台式机上安装Software Testing Automation Framework (STAF) 来管理您的测试。它是用 Java 编写的,因此您可以在 Windows 和 Unix/Linux 桌面和服务器上使用它。

    使用 STAF,您可以创建一个测试服务器资源池,在其上进行测试,然后编写 STAX 作业(STAX 是一个 STAF 执行框架)来进行测试。该作业可以从资源池中获取第一台可用的服务器,运行测试,监控测试状态,记录结果,通知提交者,然后在完成后将服务器释放回池中。如果您有多个人提交测试作业,STAF 将管理请求队列并在他们进来时满足他们。用户可以从他们的桌面监控作业,或者您可以设置电子邮件警报以在测试完成时通知他们.

    【讨论】:

      【解决方案5】:

      我不确定我是否理解你,但有一组command line tools to deal with terminal server sessions,如果你需要从程序中执行此操作,还有一组Windows API 可以这样做。

      【讨论】:

        【解决方案6】:

        因为听起来你是一家微软商店,所以你可以将机器设置为 Outlook/exchange 中的资源并以这种方式保留它们。

        【讨论】:

        • 我认为问题更多的是合规问题。 OP 已经有一个调度系统,但没有使用。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-29
        • 2020-03-31
        • 2021-10-31
        相关资源
        最近更新 更多