Geek School Використання PowerShell для отримання інформації про комп'ютер
WMI та його новий брат CIM можуть бути використані для керування машинами Windows у вашому середовищі. Але чи знаєте ви різницю між ними? Приєднуйтесь до нас, якщо ми подивимося.
Обов'язково прочитайте попередні статті серії:
- Дізнайтеся, як автоматизувати Windows за допомогою PowerShell
- Навчання використанню командлетів у PowerShell
- Навчання використанню об'єктів у PowerShell
- Навчання форматування, фільтрації та порівняння в PowerShell
- Дізнайтеся, як використовувати віддалене використання в PowerShell
І залишайтеся з нами для решти серії цілий тиждень.
Вступ
WMI означає Інструментарій управління Windows. Слово «Приладобудування» означає, що WMI дозволяє отримувати інформацію про внутрішній стан комп'ютера, подібно до інструментів приладової панелі у вашому автомобілі, що дозволяє отримувати та відображати інформацію про стан внутрішніх компонентів вашого автомобіля..
WMI складається з сховища, що містить класи, які представляють компоненти, якими можна керувати в машині. Під цим ми маємо на увазі тільки те, що WMI має клас Win32_Battery, що не означає, що ваша машина містить батарею. Потім ці класи можна запитувати для інформації локально або навіть через мережу, використовуючи мову запитів, дуже схожу на SQL, яка називається WQL. Проте, відомо, що WMI є дуже ненадійним, головним чином через те, що він базується на RPC (Віддалені виклики процедури), які роблять деякі божевільні речі з портами, на яких вони бажають спілкуватися..
Починаючи з Windows 8 і Server 2012, WMI припиняється на користь загальної інформаційної моделі або CIM. Єдина відмінність між WMI і CIM - це транспортні протоколи, які вони використовують. Хоча WMI виконує запити з використанням віддалених викликів процедур, CIM використовує HTTP, що, здається, має величезну різницю. На сервері вони все ще розмовляють з тим же сховищем інформації.
Використання WMI
Найшвидший і найпростіший спосіб вивчення інформації, доступної вам через WMI, - це отримати копію будь-якого вільного браузера об'єктів WMI. Ми любимо цей. Після завантаження запустіть його, і у вас буде графічний інтерфейс для перегляду класів WMI.
Якщо ви хочете дізнатися щось про конфігурацію диска на комп'ютері, натисніть комбінацію клавіш Ctrl + F, щоб відкрити вікно пошуку, а потім введіть "logicaldisk" і натисніть enter.
Відразу це приведе вас до класу Win32_LogicalDisk.
На нижній половині програми можна побачити два примірники класу.
Як тільки ми маємо клас, який ми шукаємо, запит його з PowerShell є прямим.
Get-WmiObject -Query “SELECT * FROM Win32_LogicalDisk”
Я не бачив, що синтаксис на деякий час з людьми в ці дні вважають за краще використовувати новий параметризований синтаксис.
Get-WmiObject-Клас Win32_LogicalDisk
Якщо ви хочете отримати інформацію з іншого комп'ютера у вашій мережі, ви можете просто скористатися параметром ComputerName.
Get-WmiObject -Class Win32_LogicalDisk -Комп'ютерне ім'я Viper-адміністратор облікового запису
Використання CIM
Маючи на увазі, що CIM доступний лише для Windows 8 і Server 2012, цей процес є певним шляхом.
Get-CimInstance -ClassName Win32_LogicalDisk
Існує також завершення табуляції для параметра -ClassName при використанні Get-CimInstance, що показує, що в майбутньому це зусилля Microsoft.
Насправді, WMI була розроблена повністю окремою командою в Microsoft, але згодом її взяли на себе люди, відповідальні за PowerShell. Це ті, хто помітив, що буде дуже важко прибрати безлад WMI, що залишився позаду. У спробі виправити ситуацію, вони намагаються зробити WMI і CIM більш доступними, написавши cmdlets оболонки, які використовують WMI і CIM під капотом. Єдиний спосіб перевірити, чи є cmdlet обгорткою, - це перегляд документації. Наприклад, командлет Get-Hotfix є обгорткою для класу Win32_QuickFixEngineering, як показано в документації.
Це означає, що ви можете отримати виправлення на віддалених машинах за допомогою командлета Get-HotFix замість запиту WMI.
Get-HotFix -ComputerName localhost
Так що у вас є. Пам'ятайте лише, що якщо є виділений cmdlet, ви завжди захочете його використовувати, після чого CIM, якщо командлет не існує. Нарешті, якщо все інше вийде з ладу, або якщо у вашому середовищі є старі машини, вам потрібно використовувати WMI. Це все, що я маю на цей час. Побачимося завтра для більш веселого PowerShell.