четверг, 6 апреля 2017 г.

Скрипт для сбора информации о компьютере

Чем дитя не тешилось, лишь бы ногами не ходить. Поэтому, чтобы не ходить ногами по конторе, я написал скрипт (даже два!), которые собирают кое-какую системную информацию о работающих в нашей сети компьютерах.

Технические подробности под катом.




Немного воды


Для понимания на чём же у нас работают люди неплохо бы иметь информацию о "железе" и кое-каких других данных с компьютеров пользователей. Чтобы не лазить на каждый комп Radmin-ом и не отвлекать пользователей от работы, можно воспользоваться утилитами командной строки.
К сожалению, работает только на Windows XP и Windows Server 2003. Для Windows 7 на целевом компьютере нужно совершать дополнительные действия, то есть всё равно лезть Radmin-ом, т.е. весь смысл затеи теряется.

Необходимое ПО


Кроме собственно скриптов нужно следующее ПО:
  • Утилита CPU-Z. Можно взять на любимом файл-сервере. Или на сайте разработчика: http://www.cpuid.com/softwares/cpu-z.html Работает без установки, просто распаковать в любимый каталог.
    ВАЖНО! В файле cpuz.ini нужно изменить параметр CheckUpdates=0. Если будет стоять 1, то утилита полезет проверять обновления, будет спрашивать всякое, и ничего не получится.
  • Утилита PsExec из комплекта SysinternalsSuite. Также можно взять на любимом файл-сервере. Или на сайте разработчика: https://technet.microsoft.com/ru-ru/library/bb545021.aspx Работает без установки, просто распаковать в любимый каталог.

Структура каталогов



  • d:\Programs\cmd\inventory\
    • inventory.cmd
    • cpu-z\
      • cpuz.ini
      • cpuz_readme.txt
      • cpuz_x32.exe
      • cpuz_x64.exe
      • sysinfo.cmd

SysinternalsSuite в этой структуре не обязательно, путь к утилите PsExec указывается в скрипте.

Параметры запуска


На локальной машине запускается файл inventory.cmd с параметром - IP-адрес целевого компьютера, т.е. того, с которого будем собирать информацию:
inventory.cmd 192.168.0.1
Без передаваемого параметра скрипт не запустится.

Скрипты


inventory.cmd


@ECHO OFF

REM Проверяем на отсутствие IP. Без этого параметра скрипт не работает
IF "%1" EQU "" (
ECHO Нужно ввести IP компьютера
GOTO END
)

REM Установка переменных
SETLOCAL
REM Буква, на которую будет назначен сетевой диск
SET NET_DRIVE=T:
REM Откуда брать CPU-Z для копирования на целевой компьютер
SET CPUZ="d:\Programs\cmd\inventory\cpu-z"
REM Где лежит PsExec
SET PSEXEC="d:\Programs\SysinternalsSuite\PsExec.exe"

REM Собственно, скрипт

REM Подключаем диск C: на целевом компьютере как сетевой диск
NET USE %NET_DRIVE% \\%1\c$ /user:Администратор password /persistent:no

REM Создаём на целевом компьютере каталог, в котором будет работать скрипт, собирающий сведения
IF NOT EXIST %NET_DRIVE%\INVENTORY\nul MD %NET_DRIVE%\INVENTORY
IF NOT EXIST %NET_DRIVE%\INVENTORY\cpu-z\nul MD %NET_DRIVE%\INVENTORY\cpu-z

REM Копируем на целевой компьютер каталог с утилитой CPU-Z и скриптом, собирающим сведения
XCOPY /E %CPUZ% %NET_DRIVE%\INVENTORY\cpu-z

REM С помощью утилиты PsExec запускаем на целевом компьютере скрипт, собирающий сведения
%PSEXEC% \\%1 -u Администратор -p password cmd /c c:\Inventory\cpu-z\sysinfo.cmd

REM Удаляем следы присутствия на целевом компьютере
%PSEXEC% \\%1 -u Администратор -p password cmd /c RD /S /Q C:\inventory

REM После завершения работы отключаем сетевой диск
NET USE %NET_DRIVE% /d /y

REM Подключаем как сетевой диск каталог на файловом сервере с результатом работы
NET USE I: \\192.168.0.10\temp\inventory /user:username userpassword /persistent:no
START explorer I:\

:END


  • Скрипт должен быть в кодировке OEM866 (DOS), иначе не будут распознаны кириллические символы, например, "Администратор".
  • Скрипт создаёт на целевом компьютере, на диске C:, необходимую структуру каталогов, копирует туда утилиту CPU-Z и скрипт sysinfo.cmd.
  • Затем с помощью утилиты PsExec запускает на целевом компьютере скрипт sysinfo.cmd.
  • Результаты работы скрипта sysinfo.cmd сохраняются на файл-сервер.
  • После завершения скрипта sysinfo.cmd на целевом компьютере удаляется созданная структура каталогов.
  • Подключается сетевым диском каталог на файл-сервере с результатами работы скрипта sysinfo.cmd и открывается Explorer с этим каталогом.

sysinfo.cmd


@ECHO OFF

REM Подключаем как сетевой диск каталог на файл-сервере для сохранения результатов работы
NET USE Z: \\192.168.0.10\temp\inventory /user:username userpassword /persistent:no

REM Запускаем CPU-Z в режиме без GUI, зато с сохранением результатов в файл
REM В качестве имени файла используется имя компьютера из системной переменной %COMPUTERNAME%
%~dp0\cpuz_x32.exe -txt=Z:\%COMPUTERNAME%

REM Недостающую информацию даст встроенная в Windows команда systeminfo
systeminfo >> Z:\%COMPUTERNAME%.txt

REM А эти команды помогут понять есть ли у пользователя права локального администратора
net localgroup Администраторы >> Z:\%COMPUTERNAME%.txt
net localgroup Пользователи >> Z:\%COMPUTERNAME%.txt

REM Отключаем сетевой диск
NET USE Z: /d /y

:END


  • Скрипт должен быть в кодировке OEM866 (DOS), иначе не будут распознаны кириллические символы, например, "Администратор".
  • Что именно делает скрипт подробно написано в комментариях в теле скрипта.

Комментариев нет :

Отправить комментарий