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. Собирать более детальную информацию о статусе и состоянии жестких дисков.

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

Лига Сисадминов

1.5K постов17.6K подписчика

Добавить пост

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.