Я пишу командный файл (I asked a question on SU), чтобы перебирать серверы терминалов в поисках конкретного пользователя. Итак, я получил базовое начало того, что я пытаюсь сделать.Итерационные массивы в командном файле
- Введите имя пользователя
- Iterate терминальные серверы
- Отображение серверов, где найдено пользователей (они могут быть найдены на нескольких серверах и теперь снова в зависимости от того, как теряется связь)
- Показать меню опций
перебор терминальных сервера у меня есть:
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 сохраняется при вызове процесса?
- Когда я нахожу поиск, начнется ли цикл for-loop?
Я делаю это с помощью инструментов, которые у меня есть, так как я хотел бы услышать о PowerShell и других способах этого сделать, это было бы бесполезно. У меня есть блокнот и все.
Примечание: Я бы продолжил эту строку вопросов на SuperUser, за исключением того, что, похоже, это больше связано с программированием.
+1 и проверьте: отличные описания и пояснения. Если бы я мог голосовать несколько раз, я бы это сделал. Мне еще предстоит найти превосходный ресурс в Интернете, который дает хорошую информацию и полные примеры. Еще раз, отлично !!! – IAbstract