|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Сбор информации на удаленных ПК |
|
Сбор информации на удаленных ПК
|
Пользователь Сообщения: 144 |
Добрый день!
Народ помогите написать скрипт, который сможет удаленно собирать информацию о версии windows 7 (к примеру "Windows 7 x32 Enterprise (Single User) V6.01 Build 7601 Service Pack 1") на удаленных ПК. Список ПК будет в .txt файле. И есть ли такая возможно запуска службы удаленный реестр на этих же ПК? |
|
Отправлено: 10:42, 25-11-2011 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Данный о версии системы находятся в:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion "CSDVersion" = Service Pack 1 "CurrentBuild" = 7601 "ProductName" = Windows 7 Enterprise |
Отправлено: 11:03, 25-11-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Написал вот такой скрипт на сбор информации о версии W7, но если служба удаленный реестр потушена, то все плохо...
Кто подскажет как можно удаленно запустить службу удаленный реестр или откуда (возможно из файла?) можно достать информации о версии w7? TrayTip ("Status", "Выберите файл", 5, 1) Opt ( "TrayAutoPause", 0) $open = FileOpenDialog("Выберите файл", @DesktopDir & "\AUTOIT", "Текстовый документ (*.txt)", 1) If @error = 1 Then Exit $file = FileOpen ($open, 0) FileDelete ("check_version_os.txt") While 1 $line = FileReadLine($file) If @error = -1 Then ExitLoop $P = Ping ( $line, 10) ; Провека доступности узла посредсвом ICMP запросов If $P = 0 Then $a = "Недоступен" FileWrite ("check_office_log.txt", $line&@TAB&"="&@TAB&$a&@CRLF) EndIf If $P > 0 Then $ProductName = RegRead("\\"&$line&"\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName") $CurrentBuild = RegRead("\\"&$line&"\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentBuild") $CSDVersion = RegRead("\\"&$line&"\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CSDVersion") FileWrite ("check_version_os.txt", $line&@TAB&"="&@TAB&$ProductName&@TAB&"="&@TAB&$CurrentBuild&@TAB&"="&@TAB&$CSDVersion&@CRLF) EndIf Wend TrayTip ("Status", "Завершено", 3, 1) FileClose($file) FileClose($open) |
Отправлено: 11:35, 25-11-2011 | #3 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Народ, помогите написать 2 функции...
Обе работают с програмой: "sc" 1. Первая состоит из 3-х переменных: _function_1 ($pc_name, $service_name, $tipe) 1.1. Сперва проверяет тип запуска службы и если тип запуска = "$tipe" ( вот так: "sc \\$pc_name config $service_name start= $tipe" ), то выход. 1.2. Если тип запуска службы не равен "$tipe", то она выставляет меняет её значение на "$tipe" и выходит. 2. Вторая состоит из 3-х переменных: _function_2 ($pc_name, $service_name, $action) 2.1. Cверяет совпадает статус службы с $action (запуск, стоп) , если да то выход. 2.2. Если нет, то функция запускает, останавливает ($action равен или stop или start) нужную службу ($service_name) на заданном ПК ($pc_name). Запуск службы на удаленном пк происходит через команду sc \\pc start RemoteRegistry |
Отправлено: 16:22, 25-11-2011 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать HFShak, не проще ли и надёжней использовать технологию Wbem (она же в простонародье WMI) для сбора потребных сведений с удалённых машин?
|
|
Отправлено: 17:50, 25-11-2011 | #5 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Спасибо. А можно какой-нибудь пример скрипта сбора информации с удаленной машины?
|
Отправлено: 17:02, 26-11-2011 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать HFShak, в принципе, практически любой WSH скрипт, использующий Wbem, может быть с лёгкостью переписан на AutoIt. Здесь я приводить примеры не буду, ибо Вы можете легко найти их непосредственно в Русском сообществе AutoIt: WMI site:http://autoit-script.ru - Поиск в Google (тамошний родной поиск работает только после регистрации).
|
Отправлено: 17:57, 26-11-2011 | #7 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Спасибо, нашел похожие темы на удаленный запуск служб.
Есть один момент, который надо исправить, я не знаю, как это сделать... Как сделать так, чтобы скрипт проверял тип запуска службы на удаленном ПК и если она соответствует $sServiceName, то он переходил в следующему по списку ПК? И если вдруг нету доступа к удаленно машине, он не прерывал скрипт а так же переходил в следующему оп списку ПК и делал запись об этом событии в log.txt... Вот сам код: $open = FileOpenDialog("Выберите файл", @DesktopDir & "\AUTOIT", "Текстовый документ (*.txt)", 1) If @error = 1 Then Exit $file = FileOpen ($open, 0) FileDelete ("run_services.txt") $iCounterSuccess = 0 $iCounterError = 0 $sChangeMode = "Automatic" ; режимы запуска: "Manual", "Automatic", "Disabled" $sServiceName = "RemoteRegistry" While 1 $line = FileReadLine($file) If @error = -1 Then ExitLoop $P = Ping ( $line, 10) ; Провека доступности узла посредсвом ICMP запросов If $P = 0 Then $a = "Недоступен" $iCounterError = $iCounterError + 1 FileWrite ("run_services.txt", $line & @TAB & "=" & @TAB & $a & @CRLF) EndIf If $P > 0 Then $a = "Доступен" $objWMIService = ObjGet("winmgmts:\\" & $line & "\root\CIMV2") $objShare = $objWMIService.Get("Win32_Service.Name='" & $sServiceName & "'") ; переменной присваивается имя службы $objInParam = $objShare.Methods_("ChangeStartMode").inParameters.SpawnInstance_() $objInParam.Properties_.Item("StartMode") = $sChangeMode ; переменной присваивается тип запуска службы $objOutParams = $objWMIService.ExecMethod("Win32_Service.Name='" & $sServiceName & "'", "ChangeStartMode", $objInParam) FileWrite ("run_services.txt", $line & @TAB & "=" & @TAB & $a & @TAB & "=" & @TAB & $sServiceName & @TAB & "=" & @TAB & $sServiceName & @CRLF) $iCounterSuccess = $iCounterSuccess + 1 EndIf WEnd FileWrite ("run_services.txt", "Количество доступных ПК "&@TAB&@TAB&"="&@TAB&$iCounterSuccess&@CRLF) FileWrite ("run_services.txt", "Количество недоступных ПК"&@TAB&@TAB&"="&@TAB&$iCounterError&@CRLF) |
Отправлено: 18:55, 26-11-2011 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - Сбор информации о железе удаленных ПК | OstJoker | Скриптовые языки администрирования Windows | 9 | 21-11-2012 13:38 | |
Сбор информации по файлам | Serg2010 | AutoIt | 1 | 14-11-2011 10:35 | |
AD и сбор информации о клиентском ПО | Trinux | Microsoft Windows NT/2000/2003 | 1 | 07-09-2011 14:37 | |
PowerShell - Сбор сведений на удаленных компьютерах и вывод в консоль | tarasov.evgeny | Скриптовые языки администрирования Windows | 2 | 18-03-2011 17:19 | |
Сбор информации и разные IP | User15 | Хочу все знать | 7 | 30-12-2010 11:49 |
|