Добавить в корзинуПозвонить
Найти в Дзене
ТЕХНО 89

💣 PowerShell GURU #2. GET-COMPUTERINFO: 200+ ПОЛЕЙ ЗА 0.8 СЕК ИЛИ 4 СЕКУНДЫ НА HDD?

Зачем гуглить версию сборки, если одна команда отдаёт всё? 🤔 systeminfo из CMD — это уже музейный экспонат. Покажу 5 полей, которые реально нужны админу. Честно предупреждаю: на старых HDD команда «думает» 3–4 секунды. Это не баг. Это последовательное чтение WMI, реестра и COM-объектов. Я в PowerShell 20 лет, поэтому говорю как есть: удобство ≠ производительность.
Cmdlet последовательно
Оглавление

Зачем гуглить версию сборки, если одна команда отдаёт всё? 🤔 systeminfo из CMD — это уже музейный экспонат. Покажу 5 полей, которые реально нужны админу. Честно предупреждаю: на старых HDD команда «думает» 3–4 секунды. Это не баг. Это последовательное чтение WMI, реестра и COM-объектов. Я в PowerShell 20 лет, поэтому говорю как есть: удобство ≠ производительность.

ПРОСТО - ПОСТАВЬТЕ ЛАЙК, ЗА СТАРАНИЯ, СПАСИБО

🔍 ЧТО ПРОИСХОДИТ ПОД КАПОТОМ?

Cmdlet последовательно опрашивает Win32_OperatingSystem, CIM-классы, ветки реестра и .NET-окружение. Итог: 200+ свойств. На NVMe это ~0.8 сек. На вращающемся диске — 3–4 секунды. Архитектура cmdlet такова, что он не кэширует результаты. Каждый запуск — новый полный цикл сбора.

⚠️ МИФ ПРО ПАРАМЕТР -PROPERTY

В PS 7.6.0 параметр -Property существует, но он не ускоряет выполнение. Cmdlet всё равно инициализирует все внутренние провайдеры, собирает полный объект, а уже потом фильтрует вывод. Экономия памяти есть только на этапе передачи по конвейеру. Для пяти серверов — незаметно. Для трёх тысяч машин — критично.

🎯 ЧТО ВАМ НУЖНО НА САМОМ ДЕЛЕ

90% задач инвентаризации сводятся к этому списку:

OsName — имя ОС

OsVersion — версия сборки

CsProcessors — архитектура ЦП

WindowsInstallDateFromRegistry — дата установки

TimeZone — текущий часовой пояс

🛠️ РАБОЧИЙ ВАРИАНТ ДЛЯ PS 7.6.0 / WIN11 24H2

Ленивый путь (читабельно, но медленно):

Get-ComputerInfo -Property OsName, OsVersion, CsProcessors, WindowsInstallDateFromRegistry, TimeZone | Format-Table -AutoSize

Путь инженера (быстро, точечно, без мусора):

$os = Get-CimInstance Win32_OperatingSystem

$cpu = Get-CimInstance Win32_Processor | Select-Object -First 1

$date = [datetime]::FromFileTime((Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').InstallDate)

[PSCustomObject]@{

OS = $os.Caption

Build = $os.Version

CPU = "$($os.NumberOfProcessors) x $($cpu.Name)"

Install = $date

TZ = [System.TimeZoneInfo]::Local.DisplayName

} | Format-Table -AutoSize

Разница в скорости на HDD: до 10 раз.

🔑 ДОМЕННАЯ СРЕДА И ПРАВА ДОСТУПА

Команда читает HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion. По умолчанию доступ есть у Authenticated Users. Если скрипт падает с Access Denied, причина в Restrictive GPO, AppLocker или изменённых ACL. Гасить ошибку через -ErrorAction SilentlyContinue — это маскировка проблемы, а не решение. Лечите политики безопасности, а не глушите вывод.

🤔 ВОПРОС НА ЗАСЫПКУ

Вы готовы жертвовать тремя секундами ради одной строки кода, или точечный CIM-запрос станет вашим стандартом для парковой автоматизации? Пишите в комментариях, какой метод используете в продакшене и почему.

-2

#PowerShell #PS7 #PowerShell7 #Windows11 #Windows10 #Скрипты #Администрирование #DevOps #SysAdmin #Automation #Инвентаризация #GetComputerInfo #CIM #WMI #Registry #GPO #ActiveDirectory #ServerAdmin #ITInfrastructure #TechBlog #Программирование #ИТ #СистемныйАдминистратор #Оптимизация #PowerShellCore #Win11_24H2 #MicrosoftLearn #TechTips #ITSecurity #CodeOptimization