CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Аватара пользователя
freegod

CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Сообщение freegod »

Доброго дня.

Такая задача:

Есть машины в домене, есть bat файл с определённым набором команд, запускаемый от имени пользователя с правами администратора, необходимо определить имя пользователя от которого выполнен вход на машину, для того что бы попасть в его профиль на данной машине и, возможно, выполнить некоторые действия от имени этого пользователя.

Фактически задача сводится к тому что нужно поместить имя залогиневшегося пользователя в переменную, при условии что скрипт запущен от другого пользователя.

Мне на ум приходит только определить пользователя от которого запущен процесс explorer.exe, но как это реализовать, ума не приложу.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Сообщение Iska »

freegod, попробуйте передавать пакетному файлу имя пользователя посредством:



Код:

Код: Выделить всё

SomeBatch.cmd "%UserDomain%\%UserName%"

а в самом пакетном файле просто обрабатывайте переданный параметр. Не?




Цитата freegod:



необходимо определить имя пользователя от которого выполнен вход на машину,
CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.




Строго говоря, таких пользователей может быть и несколько.
Аватара пользователя
freegod

Re: CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Сообщение freegod »

Iska, К сожалению, так я получу имя пользователя от которого запущен пакетный файл, а мне нужно получить имя пользователя от которого запущен рабочий стол.

Объясняю ситуацию:

Есть более 1000 машин в домене, на которые я, в связи со своими служебными обязанностями, подключаюсь и выполняю некоторый пакетный файл от своей учётной записи, с помощью скрипта, помимо действий выполняющихся только от имени администратора, мне необходимо попадать в папку пользователя работающего за этим ПК что бы выполнить определённый набор действий с файлами. Каждый раз задавать имя пользователя в ручную очень не удобно, поэтому хотелось бы получить имя пользователя который физически выполнил вход на машину.
Аватара пользователя
freegod

Re: CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Сообщение freegod »

Iska, К сожалению, так я получу имя пользователя от которого запущен пакетный файл, а мне нужно получить имя пользователя от которого запущен рабочий стол.

Объясняю ситуацию:

Есть более 1000 машин в домене, на которые я, в связи со своими служебными обязанностями, подключаюсь и выполняю некоторый пакетный файл от своей учётной записи, с помощью скрипта, помимо действий выполняющихся только от имени администратора, мне необходимо попадать в папку пользователя работающего за этим ПК что бы выполнить определённый набор действий с файлами. Каждый раз задавать имя пользователя в ручную очень не удобно, поэтому хотелось бы получить имя пользователя который физически выполнил вход на машину.
Аватара пользователя
Kazun

Re: CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Сообщение Kazun »

Цитата Kazun:



wmic path win32_computersystem get username | find "\"
CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.




Покажет последнего зарегистрировавшегося пользователя. А вот остальное вполне годится, там есть на что ориентироваться (console и т.п.).




Цитата freegod:



подключаюсь и выполняю
CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.




Как именно?
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Сообщение Iska »

Цитата Iska:



подключаюсь и выполняю »
CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.




С помощью Radmin.

Да, quser и qwinsta подходят.

Подскажите как вырезать из выхлопа qwinsta | find "console" имя пользователя и поместить в переменную?
Аватара пользователя
freegod

Re: CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Сообщение freegod »

Цитата freegod:



Подскажите как вырезать из выхлопа qwinsta | find "console" имя пользователя и поместить в переменную?
CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.




Например, так:



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq tokens=2 delims= " %%i in (`qwinsta.exe^|find.exe /i "console"`) do set sUserName=%%i
if defined sUserName echo [%sUserName%]
endlocal
exit /b 0
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Сообщение Iska »

Цитата freegod:



Подскажите как вырезать из ... имя пользователя и поместить в переменную?
CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.




почему именно оттуда, из net user можно тоже и еще надо учесть что имя юзера может иметь пробел



Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
 for /f "delims=" %%a in ('net user^|find "%UserName%"') do (
  set "v=%%a"& set s=
  for %%s in (!v:%UserName%^="%UserName%"!) do if not defined s set "s=%%~s"
 )
 echo %s%
endlocal
pause
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Сообщение alpap »

Iska, Спасибо, ваш код работает. Это то что мне нужно.

alpap, К сожалению, ваш способ не работает, net user выдаёт только имена локальных пользователей, а не доменных.
Аватара пользователя
freegod

Re: CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.

Сообщение freegod »

Цитата freegod:



net user выдаёт только имена локальных пользователей, а не доменных.
CMD/BAT - [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.




А так (спрашиваю, а не утверждаю, поскольку проверять нынче не на чем):



Код:

Код: Выделить всё

net.exe user /domain

?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»