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

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

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

Сообщение volk1234 »

Написал себе простейший скрипт для рабочих групп-

создает Учетную запись администратора с паролем.



net user USER PASS /add

и так далее.



Проблемма в том, что иногда попадается англицкая винда и группа называется Administrators, а не Администраторы.

Я сделал простейший выбор через set /p, 1-ENG 2-RUS.

Есть ли способ получить в переменную название группы Администраторы.
Аватара пользователя
etix

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

Сообщение etix »

Задачу получения имени локальных администраторов еще можно решить так:



Код:

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

@set AdminName=Administrator
@net user %AdminName% 2>&1
@IF ERRORLEVEL 1 set AdminName=Администратор && chcp 866 >nul
@echo %AdminName%

Использовал на зоопарке русских и английских клиентских машин. См. также сообщение ниже от тов. Iska.
Аватара пользователя
Petya V4sechkin

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

Сообщение Petya V4sechkin »

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 имя группы.
Аватара пользователя
volk1234

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

Сообщение volk1234 »

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




Цитата:



volk1234, а есть ли смысл?



ну хотябы, чтобы не копатся выясняя - а не переименована ли группа Администраторы ...

Плюс, автоматически можно переименовать локальную учетку Администратор, и понизить ее до Пользователя.

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

Надо все это почистить, вот планирую ...
Аватара пользователя
Petya V4sechkin

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

Сообщение Petya V4sechkin »

Цитата 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%"
Аватара пользователя
volk1234

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

Сообщение volk1234 »

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



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

то есть в итоге





Код:

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

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



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



еще конечно хотелось бы следующего:

определения всех УЗ с правами администратора.

ситуация самая обычная - компьютер на нем установлена WinXP с 2 УЗ: Администратор и Коля (с правами админа)

Необходимо это исправить, так как домена нету - исправить ручками или атоматизированно:

Админ запись Коля понизить до пользователя, Администратора понизить до пользователя. и так далее если админов больше....
Аватара пользователя
Petya V4sechkin

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

Сообщение Petya V4sechkin »

Цитата 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 на разных ОС.
Аватара пользователя
volk1234

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

Сообщение volk1234 »

Цитата volk1234:



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




В вашем батнике не определена переменная NewAdmin.

И нет переименования:


Цитата volk1234:



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





Цитата volk1234:



Set %admname(счетчик)%=%%I
CMD/BAT - [решено] Как получить название группы Администраторов в переменную.




А это зачем?
Аватара пользователя
Petya V4sechkin

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

Сообщение Petya V4sechkin »

с %NewAdmin% разобрался, супер, спасибо.

насчет счетчика -

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

админ1 > пользователь

админ2 > пользователь

админ3 > пользователь



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



Я понимаю, что вы не умеете читать мысли. Изображение
Аватара пользователя
volk1234

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

Сообщение volk1234 »

с %NewAdmin% разобрался, супер, спасибо.

насчет счетчика -

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

админ1 > пользователь

админ2 > пользователь

админ3 > пользователь



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



Я понимаю, что вы не умеете читать мысли. Изображение
Ответить

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