Windows Server 2016中注销除脚本运行用户外的所有其他用户
解决Windows Server 2016注销所有其他用户(排除当前用户)的问题
你的原脚本存在两个问题:一是仅处理了断开连接的会话,漏掉了活跃状态的用户;二是未排除当前执行脚本的用户,导致自身也被注销。以下是修正后的脚本,可实现注销所有其他用户(含活跃、断开连接状态)且保留当前用户的需求:
# 获取当前执行脚本的用户名 $currentUser = $env:USERNAME # 查询所有用户会话,过滤掉当前用户和系统服务会话 query user | Where-Object { $_ -notmatch $currentUser -and $_ -notmatch 'services' } | ForEach-Object { # 提取会话ID(每行的第二个字段) $sessionId = ($_ -split '\s+')[1] # 执行注销操作 logoff $sessionId }
脚本说明:
$currentUser = $env:USERNAME:直接获取当前用户的用户名,确保后续过滤时排除自身query user:列出服务器上所有用户的会话信息,包含活跃、断开连接等状态Where-Object:过滤条件排除当前用户的会话,同时排除系统服务相关的会话- 提取每行中的会话ID,通过
logoff命令注销对应的用户会话
内容的提问来源于stack exchange,提问作者navin
相关产品推荐
相关产品推荐

