Я пишу пакетный файл (я задал вопрос по SU) для перебора серверов терминалов в поисках определенного пользователя. Итак, я получил основное начало того, что я пытаюсь сделать.
- Введите имя пользователя
- Итерация терминальных серверов
- Отображение серверов, на которых находится пользователь (они могут быть найдены на нескольких серверах время от времени в зависимости от того, как теряется соединение)
- Показать меню опций
Итерация терминальных серверов у меня есть:
for /f "tokens=1" %%Q in ('query termserver') do (set __TermServers.%%Q)
Теперь я получаю ошибку...
Environment variable __TermServers.SERVER1 not defined
...для каждого терминального сервера. Это действительно единственная вещь в моем пакетном файле на данный момент. Любая идея о том, почему эта ошибка происходит? Очевидно, переменная не определена, но я понял, что команда SET делает именно это.
Я также думаю, что для продолжения работы над итерацией (каждый терминальный сервер) мне нужно будет сделать что-то вроде:
:Search
for /f "tokens=1" %%Q in ('query termserver') do (call Process)
goto Break
:Process
for /f "tokens=1" %%U in ('query user %%username%% /server:%%Q') do (set __UserConnection = %%C)
goto Search
Тем не менее, есть 2 вещи, которые меня беспокоят в этом:
- Значение %%Q все еще активно при вызове Process?
- Когда я перейду к поиску, будет ли цикл for начинаться заново?
Я делаю это с помощью инструментов, которые есть в моем распоряжении, поэтому, как бы я ни хотел услышать о PowerShell и других способах сделать это, это было бы бесполезно. У меня есть блокнот и все.
Примечание. Я бы продолжил эту серию вопросов о SuperUser, за исключением того, что, похоже, это больше касается специфики программирования.