imcat
19-11-2021, 10:59
Добрый день! Данный скрипт, ищет пользователя, который залогинен на одном или нескольких терминальных серверах из списка. Прошу помочь изменить функционал скрипта. Необходимо просматривать всех залогинненых пользователей на всех указанных терминалах, выявлять дубликаты, и направлять результаты в накопительный лог например:
12.11.2021 10:35 username01 logged in SERVER1, SERVER2
12.11.2021 14:40 uername02 logged in SERVER1, SERVER3, SERVER4
и т.д.
т.е. нужно учитывать только тех пользователей, которые залогинились более чем на одном терминале. Сканирование начинать сразу после запуска скрипта. Скрипт будет автоматически периодически запускаться.
@echo off
setlocal enabledelayedexpansion
set "serverlist=SERVER1 SERVER2 SERVER3 SERVER4 SERVER5
:loop
set /p "usernames=Please enter username to find:"
if not defined usernames goto :loop
set "userlocation="
for %%i in (%serverlist%) do (query user %usernames% /server:%%i | findstr /i "%usernames:"=\"%" >nul && set "userlocation=!userlocation!, %%i")
if defined userlocation (echo User "%usernames%" logged on !userlocation:~2!.) else (echo User "%usernames%" not found)
:choice
set /p "want=Do You want to find more users (y/n)?:"
if /i "%want%"=="y" goto :loop
if /i "%want%"=="n" exit
goto :choice
12.11.2021 10:35 username01 logged in SERVER1, SERVER2
12.11.2021 14:40 uername02 logged in SERVER1, SERVER3, SERVER4
и т.д.
т.е. нужно учитывать только тех пользователей, которые залогинились более чем на одном терминале. Сканирование начинать сразу после запуска скрипта. Скрипт будет автоматически периодически запускаться.
@echo off
setlocal enabledelayedexpansion
set "serverlist=SERVER1 SERVER2 SERVER3 SERVER4 SERVER5
:loop
set /p "usernames=Please enter username to find:"
if not defined usernames goto :loop
set "userlocation="
for %%i in (%serverlist%) do (query user %usernames% /server:%%i | findstr /i "%usernames:"=\"%" >nul && set "userlocation=!userlocation!, %%i")
if defined userlocation (echo User "%usernames%" logged on !userlocation:~2!.) else (echo User "%usernames%" not found)
:choice
set /p "want=Do You want to find more users (y/n)?:"
if /i "%want%"=="y" goto :loop
if /i "%want%"=="n" exit
goto :choice