Войти

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


freegod
27-12-2018, 07:45
Доброго дня.
Такая задача:
Есть машины в домене, есть bat файл с определённым набором команд, запускаемый от имени пользователя с правами администратора, необходимо определить имя пользователя от которого выполнен вход на машину, для того что бы попасть в его профиль на данной машине и, возможно, выполнить некоторые действия от имени этого пользователя.
Фактически задача сводится к тому что нужно поместить имя залогиневшегося пользователя в переменную, при условии что скрипт запущен от другого пользователя.
Мне на ум приходит только определить пользователя от которого запущен процесс explorer.exe, но как это реализовать, ума не приложу.

Iska
27-12-2018, 17:02
freegod, попробуйте передавать пакетному файлу имя пользователя посредством:
SomeBatch.cmd "%UserDomain%\%UserName%"
а в самом пакетном файле просто обрабатывайте переданный параметр. Не?

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

freegod
28-12-2018, 07:23
Iska, К сожалению, так я получу имя пользователя от которого запущен пакетный файл, а мне нужно получить имя пользователя от которого запущен рабочий стол.
Объясняю ситуацию:
Есть более 1000 машин в домене, на которые я, в связи со своими служебными обязанностями, подключаюсь и выполняю некоторый пакетный файл от своей учётной записи, с помощью скрипта, помимо действий выполняющихся только от имени администратора, мне необходимо попадать в папку пользователя работающего за этим ПК что бы выполнить определённый набор действий с файлами. Каждый раз задавать имя пользователя в ручную очень не удобно, поэтому хотелось бы получить имя пользователя который физически выполнил вход на машину.

Kazun
28-12-2018, 08:44
wmic path win32_computersystem get username | find "\"

quser /?
qwinsta /?

Iska
28-12-2018, 17:28
wmic path win32_computersystem get username | find "\" »
Покажет последнего зарегистрировавшегося пользователя. А вот остальное вполне годится, там есть на что ориентироваться (console и т.п.).

подключаюсь и выполняю »
Как именно?

freegod
29-12-2018, 15:23
подключаюсь и выполняю » »
С помощью Radmin.
Да, quser и qwinsta подходят.
Подскажите как вырезать из выхлопа qwinsta | find "console" имя пользователя и поместить в переменную?

Iska
29-12-2018, 16:27
Подскажите как вырезать из выхлопа qwinsta | find "console" имя пользователя и поместить в переменную? »
Например, так:
@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

alpap
30-12-2018, 02:33
Подскажите как вырезать из ... имя пользователя и поместить в переменную? »
почему именно оттуда, из 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

freegod
15-01-2019, 11:52
Iska, Спасибо, ваш код работает. Это то что мне нужно.
alpap, К сожалению, ваш способ не работает, net user выдаёт только имена локальных пользователей, а не доменных.

Iska
15-01-2019, 17:12
net user выдаёт только имена локальных пользователей, а не доменных. »
А так (спрашиваю, а не утверждаю, поскольку проверять нынче не на чем):
net.exe user /domain
?

freegod
16-01-2019, 07:59
net.exe user /domain »
Так можно получить список всех пользователей домена.
Собственно при выполнении, спустя пару минут контроллер домена показал мне список из нескольких десятков тысяч пользователей, данный список даже не влазит в консоль, ну и не подходит для моих целей.
По моему, команда net user не даёт информации о залогинившихся пользователях на машине.

Iska
16-01-2019, 19:10
ак можно получить список всех пользователей домена.
Собственно при выполнении, спустя пару минут контроллер домена показал мне список из нескольких десятков тысяч пользователей, данный список даже не влазит в консоль, »
Так и должно быть :).




© OSzone.net 2001-2012