Запишіть кількість процесорів, ядер та логічних процесорів за допомогою PowerShell WindowsPro

Якщо у вас немає інвентаризаційного рішення для визначення процесорного обладнання серверів, ви можете зробити це за допомогою PowerShell та WMI. Дані, записані віддалено, можна зберегти у файлі CSV для подальшого аналізу.

процесорів

Зокрема, у віртуалізованих середовищах важливо мати огляд обчислювальних можливостей сервера. Таким чином, можна уникнути надмірного розподілу vCPU для віртуальних машин.

Планування потужності та управління ліцензіями

Знання кількості встановлених процесорів та обчислювальних ядер також відіграє важливу роль в управлінні ліцензіями. Зараз більшість виробників виставляють рахунки за своє серверне програмне забезпечення за сокет або за ядро. Microsoft переключила ліцензування Windows Server 2016 на про-ядерну модель.

Плануючи потужність віртуалізованих серверів, потрібно, з одного боку, кількість процесорів і обчислювальних ядер. З іншого боку, вам слід також з’ясувати, скільки логічних процесорів доступно. З Hyper-V та VMware вони служать основою для розрахунку допустимого навантаження.

Потрібні дані з двох класів

Ці дані можна викликати через WMI. Проект ускладнюється тим, що за нього відповідають два різні класи. Кількість процесорів можна отримати лише з Win32_Computersystem, тоді як Win32_Processor надає інформацію про стан процесора.

Кількість та властивості процесорів для окремих серверів можна визначити за допомогою інструменту командного рядка wmic:

wmic COMPUTERSYSTEM отримує NumberOfProcessors

Процесор wmic отримує NumberOfCores, NumberOfLogicProcessors

Щоб виконати цю операцію на віддаленому сервері, вкажіть її назву за допомогою параметра/node.

Запитуйте кілька серверів віддалено за допомогою PowerShell

Однак для інвентаризації існуючих центральних процесорів може знадобитися скласти список назв серверів і додати результати до файлу CSV, щоб потім можна було оцінити дані в Excel.

Для цього ми рекомендуємо використовувати PowerShell, де першим кроком є ​​написання заголовків стовпців нового файлу CSV:

"Назва; ЦП; Ядра; Логічні ЦП" | Вихідний файл. \ Cpu.csv

Потім ви викликаєте Get-WMIObject двічі для кожного запису зі списку серверів, окремо для кожного класу. Змінні $ c та $ p зберігають результати запитів. Нарешті, оператор -join поєднує необхідні значення у рядок, а Out-File додає його до раніше створеного файлу CSV.

Get-Content. \ Servers.txt | для кожного

$ c = Get-WmiObject -Class Win32_Computersystem -ComputerName $ _;
$ p = Get-WmiObject -Class Win32_Processor -ComputerName $ _;
-приєднатися ($ c.Name, ";", $ c.NumberOfProcessors, ";", $ p.NumberOfCores, ";",
$ p.NumberOfLogicProcessors) | Out-File -Append. \ Cpu.csv;

Цей приклад передбачає, що список імен серверів міститься у файлі servers.txt і що він містить один запис на рядок. Він також використовує старіший Get-WmiObject, який можна легко замінити на новий командлет CIM Get-CimInstance. Його головна перевага полягає в тому, що він спілкується через WinRM, а більше не через DCOM.

На додаток до згаданих властивостей, клас Win32_Processor пропонує ряд інших функцій процесора. Сюди входить, наприклад, позначення (Заголовок), виробник (Виробник) або ідентифікатор (ProcessorId). Подано повний перелік доступних властивостей

Get-CimInstance -Class Win32_Processor | гм