Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как получить название группы Администраторов в переменную.

Ответить
Настройки темы
CMD/BAT - [решено] Как получить название группы Администраторов в переменную.

Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: volk1234
Дата: 26-05-2009
Написал себе простейший скрипт для рабочих групп-
создает Учетную запись администратора с паролем.

net user USER PASS /add
и так далее.

Проблемма в том, что иногда попадается англицкая винда и группа называется Administrators, а не Администраторы.
Я сделал простейший выбор через set /p, 1-ENG 2-RUS.
Есть ли способ получить в переменную название группы Администраторы.

-------

Ю-ху!


Отправлено: 11:14, 28-03-2009

 


Moderator


Сообщения: 53180
Благодарности: 15431

Профиль | Отправить PM | Цитировать


volk1234, а есть ли смысл?
Можно просто обе команды выполнить:
Код: Выделить весь код
net localgroup Администраторы /add USER
net localgroup Administrators /add USER
и не напрягаться с выяснением.

Цитата volk1234:
Есть ли способ получить в переменную название группы Администраторы.
Встроенная группа Администраторы всегда имеет SID = S-1-5-32-544 (KB243330), получить имя по SID можно командой:
Код: Выделить весь код
WMIC Group Where "SID = 'S-1-5-32-544'" Get Name
или с помощью PsGetSid.

Пример:
Код: Выделить весь код
Set AdmGroupSID=S-1-5-32-544
Set AdmGroup=
ChCP 1251 >nul
For /F "Tokens=1* Delims=: " %%I In ('PsGetSid %AdmGroupSID% 2^>nul ^| Find /I "Alias:"') Do Set AdmGroup=%%J
ChCP 866 >nul
Set AdmGroup=%AdmGroup:~8%
или так:
Код: Выделить весь код
Set AdmGroupSID=S-1-5-32-544
Set AdmGroup=
For /F "UseBackQ Tokens=1* Delims==" %%I In (`WMIC Group Where "SID = '%AdmGroupSID%'" Get Name /Value ^| Find "="`) Do Set AdmGroup=%%J
Set AdmGroup=%AdmGroup:~0,-1%
В переменной AdmGroup имя группы.

Последний раз редактировалось Petya V4sechkin, 28-03-2009 в 18:25. Причина: перетряхнул WMIC.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:49, 28-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


Мда. Все не так страшно как выглядит в коде

Цитата:
volk1234, а есть ли смысл?
ну хотябы, чтобы не копатся выясняя - а не переименована ли группа Администраторы ...
Плюс, автоматически можно переименовать локальную учетку Администратор, и понизить ее до Пользователя.
Есть несколько организаций по 10 комп. в каждой, с обыной рабочей группой и зверинцем из программ на каждом рабочем месте.
Надо все это почистить, вот планирую ...

-------

Ю-ху!


Отправлено: 16:39, 28-03-2009 | #3



Moderator


Сообщения: 53180
Благодарности: 15431

Профиль | Отправить PM | Цитировать


Цитата volk1234:
Плюс, автоматически можно переименовать локальную учетку Администратор
Тут запрос немного другой: у встроенного админа RID = 500 (окончание SID), поэтому:
Код: Выделить весь код
Set AdmAccountRID=500
Set NewAdmin=Adminn
WMIC UserAccount Where "LocalAccount = True And SID Like 'S-1-5-%%-%AdmAccountRID%'" Call Rename Name = "%NewAdmin%"

Последний раз редактировалось Petya V4sechkin, 29-03-2009 в 09:55.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:31, 29-03-2009 | #4


Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


Многоуважаемый Petya V4sechkin!

Остался у меня последний вопрос. Как получить в переменную и понизить в правах УЗ Администратор
то есть в итоге

Код: Выделить весь код
net  localgroup %AdmGroup% %AdmName% /delete
 net  localgroup %UserGroup% %AdmName% /add
*все переменные надо получать

чесно пытался почитать справку по коммандной строке wmic - страшное дело

еще конечно хотелось бы следующего:
определения всех УЗ с правами администратора.
ситуация самая обычная - компьютер на нем установлена WinXP с 2 УЗ: Администратор и Коля (с правами админа)
Необходимо это исправить, так как домена нету - исправить ручками или атоматизированно:
Админ запись Коля понизить до пользователя, Администратора понизить до пользователя. и так далее если админов больше....

-------

Ю-ху!


Отправлено: 02:14, 05-04-2009 | #5



Moderator


Сообщения: 53180
Благодарности: 15431

Профиль | Отправить PM | Цитировать


Цитата volk1234:
Как получить в переменную
Вы же переименовали админа, поэтому должны знать новое имя (в 4-м посту переменная NewAdmin).

Цитата volk1234:
понизить в правах УЗ Администратор
Зачем? Не надо этого делать.
Просто задайте нормальный пароль.

Цитата volk1234:
Админ запись Коля понизить до пользователя, Администратора понизить до пользователя. и так далее если админов больше
Если переменная AdmGroup вычислена, а админ переименован (переменная NewAdmin), то список членов группы Администраторы (за исключением встроенного):
Код: Выделить весь код
For /F "Delims=" %%I In ('Net LocalGroup "%AdmGroup%"') Do Set Last=%%I
For /F "Skip=6 Delims=" %%I In ('Net LocalGroup "%AdmGroup%"') Do (
  If "%%I" Neq "%Last%" (
    If "%%I" Neq "%NewAdmin%" (
      Echo %%I
    )
  )
)
Вместо команды Echo %%I подставить желаемое (добавление в группу, удаление из группы).

P. S. Завтра еще проверю формат вывода Net LocalGroup на разных ОС.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:03, 05-04-2009 | #6


Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


Как раз таки результат и встроенного админа выдает.

читать дальше »
Код: Выделить весь код
Echo off
Set AdmGroupSID=S-1-5-32-544
Set AdmGroup=

For /F "UseBackQ Tokens=1* Delims==" %%I In (`WMIC Group Where "SID = '%AdmGroupSID%'" Get Name /Value ^| Find "="`) Do Set AdmGroup=%%J
Set AdmGroup=%AdmGroup:~0,-1%

For /F "Delims=" %%I In ('Net localgroup "%AdmGroup%"') Do Set Last=%%I
For /F "Skip=6 Delims=" %%I In ('Net LocalGroup "%AdmGroup%"') Do (
  If "%%I" Neq "%Last%" (
    If "%%I" Neq "%NewAdmin%" (
      Echo %%I
    )
  )
)
pause


Я тут псевдокодом напишу дальнейшее применение:


тоесть если я дальше применю вместо Echo %%I
Код: Выделить весь код
......
...Set %admname(счетчик)%=%%I
         )
   )
)
Код: Выделить весь код
For ( 
net localgroup %UserGroup%  %admname(счетчик)% /add
net localgroup %AdmGroup%  %admname(счетчик)% /delete
)

-------

Ю-ху!


Отправлено: 13:28, 05-04-2009 | #7



Moderator


Сообщения: 53180
Благодарности: 15431

Профиль | Отправить PM | Цитировать


Цитата volk1234:
Как раз таки результат и встроенного админа выдает. »
В вашем батнике не определена переменная NewAdmin.
И нет переименования:
Цитата volk1234:
автоматически можно переименовать локальную учетку Администратор »
Цитата volk1234:
Set %admname(счетчик)%=%%I »
А это зачем?

Отправлено: 13:37, 05-04-2009 | #8


Аватара для volk1234

Старовер


Сообщения: 1708
Благодарности: 314

Профиль | Отправить PM | Цитировать


с %NewAdmin% разобрался, супер, спасибо.
насчет счетчика -
чтобы переместить все учетки в группу пользователи, если у.з. больше одной,
админ1 > пользователь
админ2 > пользователь
админ3 > пользователь

а встроенную запись администратора по вашему совету, тогда просто запоролим.

Я понимаю, что вы не умеете читать мысли.

-------

Ю-ху!


Отправлено: 16:41, 05-04-2009 | #9



Moderator


Сообщения: 53180
Благодарности: 15431

Профиль | Отправить PM | Цитировать


Цитата volk1234:
чтобы переместить все учетки в группу пользователи
Но зачем для этого создавать кучу переменных?
Код: Выделить весь код
Net LocalGroup "%UserGroup%" "%%I" /Add
Net LocalGroup "%AdmGroup%" "%%I" /Delete
С переменной UserGroup разобрались? По аналогии с AdmGroup.

P. S. После этого не забудьте создать вашу новую учетку и добавить ее в Администраторы.

Отправлено: 18:35, 05-04-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как получить название группы Администраторов в переменную.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как записать в переменную результат выполнения команды? MSI Скриптовые языки администрирования Windows 64 24-12-2020 18:20
Добавление доменной группы в группу локальных администраторов gadkin Microsoft Windows NT/2000/2003 18 12-10-2010 11:47
задать название рабочей группы Setka Автоматическая установка Windows 2000/XP/2003 1 24-08-2007 03:45
Установка - Что такое член группы администраторов!!! Не могу ничего установить domber Microsoft Windows Vista 0 04-04-2007 22:08
(solved)Как получить переменную, содержащую путь к директории Documents and Settings? arial Автоматическая установка Windows 2000/XP/2003 12 15-11-2005 15:58




 
Переход