Серия «Программизмы»

16

Пишем в MySQL из Powershell скрипта

(Ссылка на github PowerShell-System-Hardware-Info)

Предыдущая часть: Powershell скрипт для сбора информации об аппаратной конфигурации компьютера

Наверное, это последняя версия скрипта по сбору инфы о железе ПК, хотя её, в принципе, есть ещё куда допиливать.

Штош. (с) Помимо экспорта в JSON, XML, CSV и HTML, скрипт теперь умеет писать в простую MySQL базу данных на чем и остановлюсь подробнее.

Для записи в базу данных на MySQL сервере надо:

01. Собственно, сам MySQL сервер. Который работает и готов принимать удаленные подключения (У меня он работает под ubuntu-server 22.04 LTS). В README на гитхабе кратко и понятно расписано как установить и настроить mysql-server "step-by-step" даже тем, кто никогда прежде не имел дела с SQL, *nix системами и вот этой вот всей петрушкой.

02. Скрипт hwinfo.ps1 в конфигурационном разделе которого надо указать:

02.1 IP-Адрес MySQL сервера

02.2 Номер порта для подключения.

02.3 Название вашей базы данных MySQL (скрипт для её создания: create_mysql_database.sql)

02.4 Имя пользователя у которого есть право писать в базу данных

02.5 Пароль этого пользователя.

02.6 Так же, надо скопировать MySQL\Connector (MySql.Data.dll) и связанную с ним сборку System.Threading.Tasks.Extensions.dll в папку со скриптом. Их можно загрузить из других источников, с сайта Oracle или через менеджер пакетов типа NuGet. Но только следите за точным совпадением версии сборок, т.н. "соблюдением зависимостей", иначе они работать откажутся. Для меня наиболее простым решением оказалась загрузка вышеуказанных файлов на клиенты. Поскольку инет на клиентах есть не всегда и, соответственно, не всегда возможна загрузка сборок, пакетов и модулей наподобие SimplySQL. Вам, может быть, удобнее будет другой подход. Например, предустановка ODBC драйвера на клиенты или что-то еще.

02.7 Все. Достаточно на удаленном ПК под Windows 10 запустить правильно сконфигурированный скрипт с достаточными правами и он соберет основную информацию о железе и запишет в базу данных MySQL

P.S. Скрипт нормально отработал на нескольких тестовых машинах с "чисто" установленной Windows 10. Поэтому, скорее всего, отработает и у вас :-) В случае чего, баги, проклятия и маты можно писать сюда. Всем добра и все такое.

P.P.S Почему MySQL, а не PostgreSQL, MariaDB, MS SQL, SQLITE и т.д.? Просто потому, что его достаточно для решения задачи.

Показать полностью
53

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера

Поскольку Windows 7 и CMD, а вместе с ней и WMIC, прощаются с нами возникла необходимость переписать предыдущий CMD скрипт для сбора основной информации о железе и софте локального ПК на Powershell.

В новой версии я сделал HTML-таблицу проще, убрал некоторую лишнюю информацию и внес еще кое-какие никому не интересные изменения. Новый скрипт умеет экспортировать данные в *.json, правильный *.csv с кавычками, удобочитаемый *.xml с понятными названиями тегов и в *.html как графическое представление собранной информации.

Зачем нужен этот велосипед, скажете вы, если уже есть hwinfo, aida, msinfo32, siw, everest и прочие? К сожалению, ни одна из вышеперечисленных программ не удовлетворяет полностью моим задачам. Они либо платные, либо требуют установки, либо не умеют в командную строку, либо требуют дополнительных действий со стороны пользователя, либо же их функционал избыточен.

Скрипт же можно изменять под ваши конкретные нужды просто редактируя код в блокноте или Powershell ISE. Linux way, bitch. Пардон. Достаточно не нарушать структуру вложенности главного словаря $PCInfo в котором хранится вся обработанная и готовая к выводу информация. То есть, не плодить еще вложенные словари внутри уже вложенных словарей. Больше словарей богу словарей! (Нет).

Пример работы скрипта при экспорте в *.HTML файл.

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера Программа, Windows, Powershell, Длиннопост

Отображение информации о железе ПК в виде *.HTML файла, для просмотра которого достаточно любого браузера.

Так выглядит информация экспортированная в *.csv и открытая в MS Excel

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера Программа, Windows, Powershell, Длиннопост

Результаты отображения информации в формате *.CSV в программе MIcrosoft Excel

Помните, что в российском Excel разделителем в CSV считается не запятая, а точка с запятой ; Соответственно для корректного отображения *.csv в Excel нужно включить в скрипте использование региональных стандартов.

Если хотим забирать инфу в какую-нибудь NoSQL базу, то лучше всего подойдет экспорт в JSON

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера Программа, Windows, Powershell, Длиннопост

Результаты отображения информации в формате *.JSON

Приятно удивило, что экспорт в JSON в Powershell делается буквально двумя строчками при условии, что вы скармливаете в конвейер [ordered]Dictionary или [PSCustomObject].

Для любителей смотреть CSV в блокноте, можно открыть CSV в блокноте.

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера Программа, Windows, Powershell, Длиннопост

Скромное и лаконичное обаяние *.CSV

Выше показан результат экспорта в правильный международный *.csv, с запятыми в качестве разделителей и токенами в кавычках, как и должно быть согласно CSV стандарту. Акцентирую на этом внимание потому, что некоторые производители, - да, Microsoft? - считают, что заключать токены строки в кавычки при экспорте в *.CSV необязательно.

Экспорт в формат XML. При желании, информацию в таком виде тоже можно хранить в NoSQL базе или просто в виде файлового хранилища на какой-нибудь админской шаре.

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера Программа, Windows, Powershell, Длиннопост

Отображение вывода в *.XML формате

Скачать скрипт с комментариями на английском можно, конечно, с github'a alive-one/PowerShell-System-Hardware-Info: PowerShell script to collect major hardware and some software information on system (github.com)

С комментариями на русском из темы форума ixbt.com Powershell скрипт для сбора информации с локального ПК - Конференция iXBT.com

P.S. Скрипт можно сделать более функциональным:

01. Добавить возможность собирать информацию об удаленных компьютерах без загрузки на эти самые компьютеры. Хотя, в принципе, ничто не мешает вам, как админу, загружать скрипт на компьютеры пользователей и писать информацию в нужном формате на шару. Или же сразу забирать с клиентов готовые результаты.

02. Писать собранную информацию в, например, MySQL базу данных.

03. Собирать более детальную информацию о статусе и состоянии жестких дисков.

Если это нужно кому-то кроме меня, прошу поддержать меня рублем. Чтобы я знал, что не зря трачу время. Поскольку время моё ограничено, увы, а финансовая жопа постоянна, двойное увы.

Показать полностью 5
303

CMD скрипт для сбора основной информации о железе и софте локального ПК

"CMD в 2022, фи, почему хотя бы не Visual Basic?" - скажет сейчас кто-нибудь. "Полно специализированных программ" - добавит кто-то еще, тыкая мышкой в HWinfo. "Почему не PowerShell?!" - воскликнет женщина в кандибобере. И т.д.


А что если я скажу вам, что у меня в сети все еще попадаются машины с Windows XP? Не говоря уж о Windows 7 настолько дремучей версии, что их PowerShell способен без проблем выполнять только простейшие вычисления.


"Обновлять надо!" - скажет кто-нибудь и будет прав. Сами обновляйте 3000+ машин. Но, я не админ на данной работе, сети и обновления тут это не мой профиль. Поэтому, я написал свой скрипт, который просто собирает информацию о железе и софте и записывает в html-файл, который удобно потом просмотреть любым браузером. Это очень упрощает сбор информации о машине с целью апгрейда, например.

А CMD потому, что он работает всегда и везде, ибо написан Великими Программистами Древности. Делюсь скриптом просто потому, что вдруг результат моей работы пригодится кому-нибудь еще.


Нормально выложить код на пикабу нельзя, поэтому:


Ссылка на Github, откуда можно забрать скрипт с комментариями на английском

https://github.com/alive-one/cmd-windows-hardware-info


Ссылка на тему на форуме (надеюсь это не считается рекламой), откуда можно забрать скрипт с комментариями на русском

https://forum.ixbt.com/topic.cgi?id=7%3A47994%3A0#0


Результат работы скрипта

CMD скрипт для сбора основной информации о железе и софте локального ПК Программирование, IT
Показать полностью 1
Отличная работа, все прочитано!