Домашня » як » Geek School Використання PowerShell для отримання інформації про комп'ютер

    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.