Домашняя » как » Geek School Использование PowerShell для получения информации о компьютере

    Geek School Использование PowerShell для получения информации о компьютере

    WMI и его новый брат CIM могут использоваться для управления компьютерами Windows в вашей среде. Но знаете ли вы разницу между ними? Присоединяйтесь к нам, как мы смотрим.

    Обязательно прочитайте предыдущие статьи серии:

    • Узнайте, как автоматизировать Windows с помощью PowerShell
    • Учимся использовать командлеты в PowerShell
    • Изучение, как использовать объекты в PowerShell
    • Обучение форматированию, фильтрации и сравнению в PowerShell
    • Научитесь использовать Remoting в 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, чтобы открыть окно поиска, затем введите «logicdisk» и нажмите enter.

    Сразу же это приведет вас к классу Win32_LogicalDisk.

    В нижней части приложения вы можете видеть, что у нас есть два экземпляра класса.

    Как только у нас будет класс, который мы ищем, запросить его из PowerShell - прямо сейчас.

    Get-WmiObject -Query «SELECT * FROM Win32_LogicalDisk»

    Я не видел этот синтаксис какое-то время, когда люди предпочитают использовать новый параметризованный синтаксис..

    Get-WmiObject -Class Win32_LogicalDisk

    Если вы хотите получить информацию с другого компьютера в вашей сети, вы можете просто использовать параметр ComputerName.

    Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper -Credential viper \ администратор

    Использование CIM

    Помня о том, что CIM доступен только в Windows 8 и Server 2012, двигаться вперед - это, безусловно, путь.

    Get-CimInstance -ClassName Win32_LogicalDisk

    Существует также завершение вкладки для параметра -ClassName при использовании Get-CimInstance, который показывает, что в будущем именно на этом будут сосредоточены усилия Microsoft.

    На самом деле, WMI был разработан совершенно отдельной командой в Microsoft, но впоследствии был принят людьми, отвечающими за PowerShell. Именно они заметили, что будет очень трудно навести порядок в беспорядке, оставленном WMI. Пытаясь исправить ситуацию, они пытаются сделать WMI и CIM более доступными, написав командлеты-оболочки, которые используют WMI и CIM под капотом. Единственный способ проверить, является ли командлет оболочкой, - это просмотреть документацию. Например, командлет Get-Hotfix является оболочкой для класса Win32_QuickFixEngineering, как видно из документации.

    Это означает, что вы можете получить исправления на удаленных компьютерах, используя командлет Get-HotFix вместо запроса WMI.

    Get-HotFix -ComputerName localhost

    Так что у вас есть это. Просто помните, что если есть выделенный командлет, вы всегда захотите его использовать, а затем CIM, если командлет не существует. Наконец, если ничего не помогает или у вас есть старые машины в вашей среде, вы захотите использовать WMI. Это все, что у меня есть на этот раз. Увидимся завтра для большего удовольствия от PowerShell.