#batch-file
#пакетный файл
Вопрос:
Приведенный ниже скрипт проверяет наличие указанных пользователей среди перечисленных удаленных серверов, и если указанные имена пользователей найдены, он удаленно отключит пользователей от перечисленных серверов. Это работает нормально, как и ожидалось.
@ECHO off
SETLOCAL
SET "users=USER01 USER02"
SET "servers=SERVER1 SERVER2 SERVER3 SERVER4"
FOR %%s IN (%servers%) DO (
FOR /f "tokens=1,2" %%a IN ('"Quser /server:%%s"') DO (
FOR %%n IN (%users%) DO (
IF /I %%a==%%n rwinsta /server:%%s %%b
)
)
)
Мне также удалось поэкспериментировать, и теперь с помощью приведенного ниже сценария я теперь могу убедиться, что из 3 пользователей один конкретный пользователь (USER2) может быть пропущен при выходе из системы. Остальные пользователи, указанные в списке пользователей, будут отключены.
@ECHO off
SETLOCAL
SET "users=USER1 USER2 USER3"
SET "servers=SERVER1 SERVER2 SERVER3 SERVER4"
FOR %%s IN (%servers%) DO (
FOR /f "tokens=1,2" %%a IN ('"Quser /server:%%s"') DO (
FOR %%n IN (%users%) DO (
IF /I %%a EQU %%n IF /I "%%n" NEQ "USER2" rwinsta /server:%%s %%b
)
)
)
Я ищу, как я могу заставить нескольких пользователей пропустить выход из системы? Если я добавлю другое условие If с помощью NEQ «USER3», оно не будет работать в соответствии с логикой.
или
Есть ли какой-либо другой способ, которым мы могли бы отключить всех пользователей, кроме User1, user2 и user3, с упомянутых серверов?
Любые предложения были бы чрезвычайно полезны.
Комментарии:
1. Вы знаете, как определять и перебирать списки, просто создайте еще один и проверьте этот список перед удалением пользователя. Другой вариант — просто удалить пользователей, которых вы не хотите отключать, из списка пользователей.
2. СОВЕТ: Запустите
help call
, установите проверку исключения в подпрограмму, которая устанавливает переменную среды true, если пользователь найден в списке исключений. Затем проверьте эту переменную на вашем внутреннем most if, где вы проверяете"USER2"
.