|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как получить название группы Администраторов в переменную. |
|
CMD/BAT - [решено] Как получить название группы Администраторов в переменную.
|
Старовер Сообщения: 1708 |
Профиль | Отправить PM | Цитировать
Написал себе простейший скрипт для рабочих групп-
создает Учетную запись администратора с паролем. net user USER PASS /add и так далее. Проблемма в том, что иногда попадается англицкая винда и группа называется Administrators, а не Администраторы. Я сделал простейший выбор через set /p, 1-ENG 2-RUS. Есть ли способ получить в переменную название группы Администраторы. |
|
------- Отправлено: 11:14, 28-03-2009 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать UserGroup допер сам сразу. RID -545
просто это будет case- скрипт - когда надо полностью ограничить юзверя -так и сделаем. А бывают клиенты - сидит начальник отдела щеки дует - у.з. у него одна Администратор ( себя он считает как минимум продвинутым пользователем) и ничего менять он не намерен, и если не дай бог завтра у него пасьянс откажется устанавливатся- лучше мне выбрасить мобилу сразу. Тут лучше свою вторую учетку добавить. |
------- Отправлено: 00:17, 06-04-2009 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Уважаемый Petya V4sechkin !
Подскажите пожалуйста еще: почему у меня не сработала команда: :LISTADM 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% Echo Группа Администраторов на этом компьютере - '%AdmGroup%' pause 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%" ( Echo %%I ) ) WMIC Group Where "SID = 'S-1-5-32-500'" Do Set Name='%AdmiGroup%' Echo Встроеный админ %AdmiName% pause GOTO :EOF Далее я хочу сделать тоже самое и для других групп. конкретно не работает последняя команда для печати имени встроенного администратора... |
------- Отправлено: 03:24, 24-04-2009 | #12 |
Сообщения: 53478
|
Профиль | Отправить PM | Цитировать Цитата volk1234:
С тем же успехом можно написать случайную последовательность букв и надеяться, что она заработает... Сначала вы хотели переименовать встроенную учетку Администратор. В 4-м посту я привел пример. Если вы переименовываете админа, то знаете новое имя (каким оно станет). Теперь уже вы не хотите ее переименовывать, а просто выводите на экран. Пожалуйста: |
|
Отправлено: 09:44, 24-04-2009 | #13 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Petya V4sechkin
Во первых спасибо за помощь. Во вторых, то что вы приводили не пошло "в стол", просто я задумал расширить функционал скрипта и ввести для удобства вывод груп и пользователей в консоли - эдакая замена консоли mmc. Может я и изобретаю велосипед и это (вывод всех груп и всех пользователей по группам) можно сделать 1й коммандой, но мне стало интересно это сделать. Правда я упорно не могу найти справки по wmic, а нахрапом логику я не могу понять. Вот приведенный вами пример в предыдущем посте. Я копирую ваш скрипт меняю RID на 545 и выдается ошибка - отсуствуют экземпляры класса. И когда применяется SID=1-5-32-500, а когда SID Like '1-5-%%-%env%' ???? |
------- Последний раз редактировалось volk1234, 26-05-2009 в 18:15. Отправлено: 16:14, 24-04-2009 | #14 |
Сообщения: 53478
|
Профиль | Отправить PM | Цитировать Цитата volk1234:
Там общие сведения о синтаксисе, командах. Например, GET - получение свойств (Properties), CALL - выполнение метода (Method). Что касается списка классов, вот полный перечень на MSDN. Например, псевдоним UserAccount соответствует классу Win32_UserAccount, а Group - Win32_Group. Еще ссылки: Доступ к WMI из командной строки. Командная оболочка WMIC Командная строка инструментария управления Windows (WMIC) Цитата volk1234:
Статью KB243330 внимательно читали? Чувствуете разницу между Group и UserAccount? Цитата volk1234:
Цитата KB243330:
Курсивом выделенное домен - это буквы/цифры из SID домена или компьютера (уникальные для каждого компьютера). Значит, для получения имени встроенной учетки Администратор достаточно найти такой UserAccount, у которого SID = S-1-5-любая_последовательность_символов-500. В языке запросов SQL (или WQL) это делается оператором LIKE (любая последовательность задается спецсимволом "%" (процент)) в условии WHERE: LocalAccount нужно, если комп в домене (чтобы выбиралась только локальная учетка). Примем во внимание, что в батнике символ "%" также является специальным, для его экранирования нужно продублировать: %%. Надеюсь, теперь вам понятно, как формируется условие WHERE в 13-м посту? Цитата KB243330:
Никаких уникальных букв/цифр здесь нет. Значит, условие поиска упрощается (LIKE не нужен). P. S. Надеюсь, что все понятно (еще раз такие полотна писать не хочется). P. P. S. Для иллюстрации вышесказанного выполните батник (и сравните команды): |
|||||
Последний раз редактировалось Petya V4sechkin, 24-04-2009 в 20:57. Отправлено: 18:47, 24-04-2009 | #15 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 22:27, 24-04-2009 | #16 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Petya V4sechkin
восставшие из ада Нашел интересное применение этой темы. Например для защиты от Кидо необходимо запретить доступ к определенной ветке реестра для группы "Все". Я использовал батник и утилиту subinacl.exe. SID группы "Все" = S-1-1-0 Взяв за основу ваш скрипт я почему-то не получил названия группы в переменную, а получил пресловутое - отсуствуют экземпляры класса. Для проверки скрипта я подставил вместо SID группы "Все", такой S-1-5-32-544 и получил "Администраторы". батник: |
------- Отправлено: 02:33, 31-07-2009 | #17 |
Сообщения: 53478
|
Профиль | Отправить PM | Цитировать volk1234, да, Win32_Group не содержит группу Все (и не только).
Полный список: Тогда можно PsGetSid поковырять (пример я уже приводил, кажется). Тут проблема с кодировкой. На русских и английских системах работает (проверял на XP, 2003, Vista, 7). |
Отправлено: 10:58, 31-07-2009 | #18 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Ну это уже черезчур.
Легче и правда тупо писать в двух наименованиях УЗ определить язык ОС да и все. Я так в одном скрипте и сделал: Но меня ждала здесь засада - по языку установки ОС -английская, а накатанный на нее MUI портил мне всю картину с именами УЗ... |
------- Отправлено: 18:01, 31-07-2009 | #19 |
Новый участник Сообщения: 1
|
Профиль | Сайт | Отправить PM | Цитировать Такой вот скриптик запущенный 1 раз на системе решит проблемму. (Искал искал не нашёл и налобал сам.)
__author__ = 'abudkar' import win32net import win32security def main(): all_groups = [g['name'] for g in win32net.NetLocalGroupEnum('', 0)[0]] for group in all_groups: sid = str(win32security.LookupAccountName('', group)[0]).replace('PySID:', '') standardGroup = StandardGroups.get(sid, '') if standardGroup and standardGroup != group: info = win32net.NetLocalGroupGetInfo('', group, 0) info['name'] = standardGroup print('Renaming: `{}` to: `{}`'.format(group, standardGroup).encode('utf-8')) win32net.NetLocalGroupSetInfo('', group, 0, info) #http://support.microsoft.com/kb/243330/en-us StandardGroups = { 'S-1-0': 'Null Authority', 'S-1-0-0': 'Nobody', 'S-1-1': 'World Authority', 'S-1-1-0': 'Everyone', 'S-1-16-0': 'Untrusted Mandatory Level', 'S-1-16-12288': 'High Mandatory Level', 'S-1-16-16384': 'System Mandatory Level', 'S-1-16-20480': 'Protected Process Mandatory Level', 'S-1-16-28672': 'Secure Process Mandatory Level', 'S-1-16-4096': 'Low Mandatory Level', 'S-1-16-8192': 'Medium Mandatory Level', 'S-1-16-8448': 'Medium Plus Mandatory Level', 'S-1-2': 'Local Authority', 'S-1-2-0': 'Local', 'S-1-2-1': 'Console Logon', 'S-1-3': 'Creator Authority', 'S-1-3-0': 'Creator Owner', 'S-1-3-1': 'Creator Group', 'S-1-3-2': 'Creator Owner Server', 'S-1-3-3': 'Creator Group Server', 'S-1-3-4': 'Owner Rights', 'S-1-4': 'Non-unique Authority', 'S-1-5': 'NT Authority', 'S-1-5-1': 'Dialup', 'S-1-5-10': 'Principal Self', 'S-1-5-11': 'Authenticated Users', 'S-1-5-12': 'Restricted Code', 'S-1-5-13': 'Terminal Server Users', 'S-1-5-14': 'Remote Interactive Logon', 'S-1-5-15': 'This Organization', 'S-1-5-17': 'This Organization', 'S-1-5-18': 'Local System', 'S-1-5-19': 'NT Authority', 'S-1-5-2': 'Network', 'S-1-5-20': 'NT Authority', 'S-1-5-3': 'Batch', 'S-1-5-32-544': 'Administrators', 'S-1-5-32-545': 'Users', 'S-1-5-32-546': 'Guests', 'S-1-5-32-547': 'Power Users', 'S-1-5-32-548': 'Account Operators', 'S-1-5-32-549': 'Server Operators', 'S-1-5-32-550': 'Print Operators', 'S-1-5-32-551': 'Backup Operators', 'S-1-5-32-552': 'Replicators', 'S-1-5-32-554': 'Pre-Windows 2000 Compatible Access', 'S-1-5-32-555': 'Remote Desktop Users', 'S-1-5-32-556': 'Network Configuration Operators', 'S-1-5-32-557': 'Incoming Forest Trust Builders', 'S-1-5-32-558': 'Performance Monitor Users', 'S-1-5-32-559': 'Performance Log Users', 'S-1-5-32-560': 'Windows Authorization Access Group', 'S-1-5-32-561': 'Terminal Server License Servers', 'S-1-5-32-562': 'Distributed COM Users', 'S-1-5-32-569': 'Cryptographic Operators', 'S-1-5-32-573': 'Event Log Readers', 'S-1-5-32-574': 'Certificate Service DCOM Access', 'S-1-5-32-575': 'RDS Remote Access Servers', 'S-1-5-32-576': 'RDS Endpoint Servers', 'S-1-5-32-577': 'RDS Management Servers', 'S-1-5-32-578': 'Hyper-V Administrators', 'S-1-5-32-579': 'Access Control Assistance Operators', 'S-1-5-32-580': 'Remote Management Users', 'S-1-5-4': 'Interactive', 'S-1-5-5-X-Y': 'Logon Session', 'S-1-5-6': 'Service', 'S-1-5-64-10': 'NTLM Authentication', 'S-1-5-64-14': 'SChannel Authentication', 'S-1-5-64-21': 'Digest Authentication', 'S-1-5-7': 'Anonymous', 'S-1-5-8': 'Proxy', 'S-1-5-80': 'NT Service', 'S-1-5-80-0': 'All Services', 'S-1-5-9': 'Enterprise Domain Controllers' } if __name__ == '__main__': main() |
Последний раз редактировалось aboudkar@fb, 27-07-2014 в 02:31. Причина: Форматирование. Отправлено: 02:28, 27-07-2014 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|