Назад | Перейти на главную страницу

% sessionname% возвращает неверное имя сеанса

У меня есть виртуализированная машина с Windows XP SP3, к которой я подключаюсь через удаленный рабочий стол. Один из моих скриптов должен использовать переменную% sessionname%. Однако это возвращает неверную информацию.

C:\>%sessionname%

постоянно возвращает RDP-Tcp # 5 вместо значения для текущего подключенного сеанса (RDP-Tcp # 35 или аналогичный), как показано в диспетчере задач

Это приводит к тому, что мои скрипты содержат неверную информацию. Что я могу сделать, чтобы решить эту проблему?

Изменить дополнительную информацию: кажется, что перезапуск решает проблему для первого подключения, но затем при последующих подключениях числа снова не синхронизируются.

У меня точно такая же проблема с Windows Server 2008 R2, работающим как удаленный рабочий стол. Идентификатор сеанса кажется всегда правильным, но вы не можете получить идентификатор сеанса ни из% sessionid%, ни из VBA Environ («SessionID»). Мое обходное решение - использовать Environ («UserName») с сеансом запросов C:> для извлечения идентификатора сеанса, а затем использовать его с C:> query process «processname», чтобы определить, выполняется ли процесс в сеансе. Я не уверен, что делает ваш сценарий, но, возможно, этот подход поможет. Обратите внимание, что это будет работать только в том случае, если пользователю разрешен только один сеанс за раз, как в случае нашей настройки терминального сервера. Если у пользователя может быть более одного сеанса, идентификатор сеанса не будет уникальным в зависимости от имени пользователя.

Спасибо, Пол за твой пост. У меня такая же проблема с Win2008R2, и я изменил свой сценарий на это:

for /F "usebackq tokens=1" %%f in (`query session ^| findstr /C:^^^>`) do set session="%%f"
set session=%session:~10,-1%
tasklist /FI "SESSIONNAME eq RDP-Tcp#%session%" | findstr mytool.exe >NUL
if %errorlevel% EQU 0 echo Tool found!

Я ищу текущий сеанс (чтобы он работал, если несколько сеансов открыты с одним и тем же пользователем). Затем я смотрю, работает ли мой инструмент в текущем сеансе.
Обратите внимание на "" вокруг %% f, чтобы меня не раздражал ">" в начале строки.

Я не уверен, почему он не обновляется должным образом, но, возможно, вы можете использовать вывод сеанс запроса вместо? Это тоже немного подробнее.