我正在编写一个批处理文件(我在 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
但是,有两件事让我感到困扰:
- 调用 Process 时 %%Q 值是否仍然存在?
- 当我转到搜索时,for循环会重新开始吗?
我正在使用我可以使用的工具来做这件事,所以尽管我很想听听 PowerShell 和其他方法来做这件事,但这将是徒劳的。我有记事本,就是这样。
注意:我会在 SuperUser 上继续这一系列问题,只是它似乎更多地涉及编程细节。