微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以域pipe理员的身份从命令行注销Windows上的所有用户

我正在Windows上运行自动化testing(Windows 10和2012),自动化的一个要求是所有用户都需要注销。 部署后我有机会做到这一点。 我有点看到这个页面给出了答案,但是我尝试query session ,我看到它甚至services和rdp-tcp会话…但我不想停止任何服务…

任何build议?

batch file在if条件下执行多个操作

Bash脚本:如何重命名文件删除数字字符?

Bash:单引号和双引号和感叹号

命令行提示符跨Windows操作系统的path

更改.bat文件中的代码页(Win7 vs Win Vista)

链接页面有正确的答案。 除了在Windows 2012/10中,您应该使用skip=2而不是1.这样您将跳过“服务”行。

所以你的批处理文件如下所示:

query session >session.txt for /f "skip=2 tokens=3," %%i in (session.txt) DO logoff %%i del session.txt

这个解决方案是基于以前的答案,但是这个会关闭所有会话(甚至断开会话)。 不幸的是,'查询会话'命令返回的每一行的文本格式可能难以解析。 正如你在下一个屏幕截图中看到的,用户名可能是空的,在这个例子中,如果你使用tokens = 3,你将得到用户名,而不是用户编译的ID。

问题是,你不能用他的用户名注销一个断开连接的用户。 为了避免这个问题,我们使用2 for循环来获取会话名称和id(取决于行格式),然后我们只保留数字值来发送logoff命令,也注销断开连接的会话。

@echo off for /f "skip=2 tokens=2,3 delims= " %%a in ('query session') DO ( echo %%a|findstr /xr "[1-9][0-9]* 0" >nul && ( logoff %%a ) echo %%b|findstr /xr "[1-9][0-9]* 0" >nul && ( logoff %%b ) )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐