Показать полную графическую версию : [решено] Получить имя текущего пользователя, запуская cmd от другого пользователя.
Доброго дня.
Такая задача:
Есть машины в домене, есть bat файл с определённым набором команд, запускаемый от имени пользователя с правами администратора, необходимо определить имя пользователя от которого выполнен вход на машину, для того что бы попасть в его профиль на данной машине и, возможно, выполнить некоторые действия от имени этого пользователя.
Фактически задача сводится к тому что нужно поместить имя залогиневшегося пользователя в переменную, при условии что скрипт запущен от другого пользователя.
Мне на ум приходит только определить пользователя от которого запущен процесс explorer.exe, но как это реализовать, ума не приложу.
freegod, попробуйте передавать пакетному файлу имя пользователя посредством:
SomeBatch.cmd "%UserDomain%\%UserName%"
а в самом пакетном файле просто обрабатывайте переданный параметр. Не?
необходимо определить имя пользователя от которого выполнен вход на машину, »
Строго говоря, таких пользователей может быть и несколько.
Iska, К сожалению, так я получу имя пользователя от которого запущен пакетный файл, а мне нужно получить имя пользователя от которого запущен рабочий стол.
Объясняю ситуацию:
Есть более 1000 машин в домене, на которые я, в связи со своими служебными обязанностями, подключаюсь и выполняю некоторый пакетный файл от своей учётной записи, с помощью скрипта, помимо действий выполняющихся только от имени администратора, мне необходимо попадать в папку пользователя работающего за этим ПК что бы выполнить определённый набор действий с файлами. Каждый раз задавать имя пользователя в ручную очень не удобно, поэтому хотелось бы получить имя пользователя который физически выполнил вход на машину.
wmic path win32_computersystem get username | find "\"
quser /?
qwinsta /?
wmic path win32_computersystem get username | find "\" »
Покажет последнего зарегистрировавшегося пользователя. А вот остальное вполне годится, там есть на что ориентироваться (console и т.п.).
подключаюсь и выполняю »
Как именно?
подключаюсь и выполняю » »
С помощью Radmin.
Да, quser и qwinsta подходят.
Подскажите как вырезать из выхлопа qwinsta | find "console" имя пользователя и поместить в переменную?
Подскажите как вырезать из выхлопа 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
Подскажите как вырезать из ... имя пользователя и поместить в переменную? »
почему именно оттуда, из 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
Iska, Спасибо, ваш код работает. Это то что мне нужно.
alpap, К сожалению, ваш способ не работает, net user выдаёт только имена локальных пользователей, а не доменных.
net user выдаёт только имена локальных пользователей, а не доменных. »
А так (спрашиваю, а не утверждаю, поскольку проверять нынче не на чем):
net.exe user /domain
?
net.exe user /domain »
Так можно получить список всех пользователей домена.
Собственно при выполнении, спустя пару минут контроллер домена показал мне список из нескольких десятков тысяч пользователей, данный список даже не влазит в консоль, ну и не подходит для моих целей.
По моему, команда net user не даёт информации о залогинившихся пользователях на машине.
ак можно получить список всех пользователей домена.
Собственно при выполнении, спустя пару минут контроллер домена показал мне список из нескольких десятков тысяч пользователей, данный список даже не влазит в консоль, »
Так и должно быть :).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.