Windows: "Get-WmiObject — мертв". Переходим на CIM
Если вы в 2025 году все еще пишете Get-WmiObject в своих PowerShell-скриптах, у нас плохие новости. Эта команда мертва (deprecated).
Почему она мертва? Она использует "старый" протокол DCOM, который:
* Медленный.
* Блокируется файрволами (требует 100500 открытых портов).
* Неэффективный.
Новый стандарт: Get-CimInstance (CIM) CIM (Common Information Model) — это современная замена WMI.
Почему CIM — это круто:
Работает по WinRM: (Как и PowerShell Remoting). Ему нужен один порт (5985 http или 5986 https). Он "пробивает" файрволы.
Быстрый: Использует WS-Man, который намного легче, чем DCOM.
Умный: Get-CimInstance возвращает "чистые" объекты, а не системный мусор.
Сравнение "до" и "после":
МЕРТВО (не делайте так):
PowerShell
ЖИВО (делайте так):
PowerShell
(...или New-CimSession для создания постоянного подключения).
Взгляд архитектора: Выбирать правильный инструмент — это и есть архитектура. Get-WmiObject — это "костыль" из эры Server 2003. Get-CimInstance — это стандарт для современной, автоматизированной Windows-инфраструктуры.
#windows #powershell #automation #wmi #cim #sysadmin #гайд #musthave
Если вы в 2025 году все еще пишете Get-WmiObject в своих PowerShell-скриптах, у нас плохие новости. Эта команда мертва (deprecated).
Почему она мертва? Она использует "старый" протокол DCOM, который:
* Медленный.
* Блокируется файрволами (требует 100500 открытых портов).
* Неэффективный.
Новый стандарт: Get-CimInstance (CIM) CIM (Common Information Model) — это современная замена WMI.
Почему CIM — это круто:
Работает по WinRM: (Как и PowerShell Remoting). Ему нужен один порт (5985 http или 5986 https). Он "пробивает" файрволы.
Быстрый: Использует WS-Man, который намного легче, чем DCOM.
Умный: Get-CimInstance возвращает "чистые" объекты, а не системный мусор.
Сравнение "до" и "после":
МЕРТВО (не делайте так):
PowerShell
# Медленно, через DCOM
Get-WmiObject -Class Win32_OperatingSystem -ComputerName SERVER01
ЖИВО (делайте так):
PowerShell
# Быстро, через WinRM
Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName SERVER01
(...или New-CimSession для создания постоянного подключения).
Взгляд архитектора: Выбирать правильный инструмент — это и есть архитектура. Get-WmiObject — это "костыль" из эры Server 2003. Get-CimInstance — это стандарт для современной, автоматизированной Windows-инфраструктуры.
#windows #powershell #automation #wmi #cim #sysadmin #гайд #musthave
🔥1
💾 PowerShell: Удаленная инвентаризация (Серийники)
Нужно собрать серийные номера серверов или ПК для гарантии/учета. Идти в серверную или просить пользователей лезть под стол не нужно. Используем CIM (современный аналог WMI).
Скрипт (сбор данных со списка компьютеров):
Pro Tip: Если нужно узнать модель материнской платы, поменяйте класс на
#windows #powershell #inventory #cim #scripting
Нужно собрать серийные номера серверов или ПК для гарантии/учета. Идти в серверную или просить пользователей лезть под стол не нужно. Используем CIM (современный аналог WMI).
Скрипт (сбор данных со списка компьютеров):
$Computers = "Server01", "Server02", "PC-Office-05"
foreach ($PC in $Computers) {
try {
$Bios = Get-CimInstance -ClassName Win32_Bios -ComputerName $PC -ErrorAction Stop
[PSCustomObject]@{
ComputerName = $PC
Serial = $Bios.SerialNumber
Manufacturer = $Bios.Manufacturer
Version = $Bios.SMBIOSBIOSVersion
}
} catch {
Write-Warning "Не удалось подключиться к $PC"
}
}
Pro Tip: Если нужно узнать модель материнской платы, поменяйте класс на
Win32_BaseBoard и запросите свойство Product .#windows #powershell #inventory #cim #scripting