Powershell проверить включен ли компьютер

Обновлено: 04.07.2024

Большая часть задач администрирования низкоуровневых сетевых протоколов связана с протоколом TCP/IP, так как это наиболее распространенный сетевой протокол. В этом разделе описано использование инструментария WMI и PowerShell для выполнения этих задач.

Получение списка IP-адресов компьютера

Список всех IP-адресов, используемых локальным компьютером, возвращает следующая команда:

Учитывая, что свойство IPAddress объекта Win32_NetworkAdapterConfiguration является массивом, необходимо использовать параметр ExpandProperty со значением Select-Object для просмотра всего списка адресов.

С помощью командлета Get-Member можно увидеть, что свойство IPAddress является массивом:

Свойство IPAddress каждого сетевого адаптера в действительности представляет собой массив. Фигурные скобки в определении указывают на то, что свойство IPAddress содержит не значение типа System.String, а массив значений типа System.String.

Вывод данных IP-конфигурации

Для отображения подробных данных IP-конфигурации каждого сетевого адаптера воспользуйтесь следующей командой:

По умолчанию отображается очень небольшая часть доступных сведений об объекте конфигурации сетевого адаптера. Для более глубокого изучения и устранения неполадок воспользуйтесь командлетом Select-Object или командлетом форматирования, например Format-List , чтобы задать отображаемые свойства.

В современных сетях TCP/IP вам, скорее всего, больше не понадобятся свойства IPX или WINS. Вы можете использовать параметр ExcludeProperty командлета Select-Object , чтобы скрыть свойства, имена которых начинаются на WINS или IPX.

Эта команда выводит подробные сведения о DHCP, DNS, маршрутизации и других менее значительных свойствах IP-конфигурации.

Проверка связи с компьютерами

Простую проверку связи с компьютером можно выполнить с помощью Win32_PingStatus. Следующая команда производит проверку связи, но при этом выводит большой объем сведений:

Удобнее отображать сводные данные, содержащие свойства Address, ResponseTime и StatusCode, как это делает приведенная ниже команда. Параметр Autosize командлета Format-Table изменяет размер столбцов таблицы для их правильного отображения в PowerShell.

Значение 0 свойства StatusCode указывает на успешно выполненную проверку связи.

Для проверки связи с несколькими компьютерами с помощью одной команды можно использовать массив. Так как адресов несколько, для проверки связи с каждым адресом по отдельности можно использовать ForEach-Object :

Один и тот же формат команды можно использовать для проверки связи со всеми компьютерами подсети. Например, при проверке частной сети, использующей номер сети 192.168.1.0 и стандартную маску подсети класса C (255.255.255.0), допустимы только локальные адреса в диапазоне от 192.168.1.1 до 192.168.1.254 (0 всегда зарезервирован в качестве номера сети, а 255 используется в качестве широковещательного адреса подсети).

Чтобы представить массив чисел от 1 до 254 в PowerShell, используйте выражение 1..254 . Таким образом, полную проверку связи с подсетью можно осуществить, добавив все значения в диапазоне к частичному адресу в операторе проверки связи:

Такой метод формирования диапазона адресов может быть использован в любых подобных случаях. Полный набор адресов можно сформировать следующим образом:

Извлечение свойств сетевого адаптера

Ранее упоминалось о возможности извлечения общих свойств конфигурации с помощью класса Win32_NetworkAdapterConfiguration. Такие сведения о сетевом адаптере, как MAC-адреса и типы адаптеров, не относятся, строго говоря, к протоколу TCP/IP, но могут оказаться полезными для понимания того, что происходит в компьютере. Сводные данные можно получить с помощью следующей команды:

Назначение домена DNS сетевому адаптеру

Чтобы назначить домен DNS для автоматического разрешения имен, нужно использовать метод SetDNSDomain класса Win32_NetworkAdapterConfiguration. Параметр Запрос со значением Invoke-CimMethod принимает строку WQL-запроса. Командлет вызывает метод, указанный для каждого экземпляра, возвращаемого запросом.

Фильтрация по IPEnabled=True необходима, так как даже в сети, использующей только TCP/IP, некоторые конфигурации сетевых адаптеров на компьютере не являются настоящими адаптерами TCP/IP. Это просто общие программные элементы, поддерживающие службы RAS, VPN, QoS и другие службы для всех адаптеров, то есть, они не имеют собственного адреса.

Выполнение задач настройки DHCP

Изменение сведений DHCP, так же как и настройка DNS, включает работу с набором сетевых адаптеров. Существует несколько отдельных действий, выполняемых с помощью инструментария WMI. Мы рассмотрим несколько наиболее типичных.

Определение адаптеров, поддерживающих DHCP

Найти на компьютере адаптеры, поддерживающие DHCP, можно с помощью следующей команды:

Чтобы исключить из поиска адаптеры, имеющие проблемы в IP-конфигурации, можно добавить требование поддержки протокола IP:

Извлечение свойств DHCP

Свойства адаптера, относящиеся к протоколу DHCP, обычно начинаются с DHCP , поэтому для отображения только этих свойств можно использовать параметр Property командлета Format-Table :

Включение поддержки DHCP на каждом адаптере

Чтобы включить поддержку DHCP на всех адаптерах, используйте команду:

Использование оператора фильтра IPEnabled=True and DHCPEnabled=False позволяет избежать включения DHCP, когда он уже включен.

Отмена и обновление аренды адреса DHCP для отдельных адаптеров

Экземпляры класса Win32_NetworkAdapterConfiguration содержат методы ReleaseDHCPLease и RenewDHCPLease . Оба метода используются одинаково. Обычно их применяют лишь при необходимости отмены или обновления аренды адресов для адаптера в отдельной подсети. Простейшим способом фильтрации адаптеров в подсети является выбор лишь тех адаптеров, которые используют шлюз для этой подсети. Например, следующая команда отменяет все аренды адресов DHCP для адаптеров на локальном компьютере, которые арендуют адреса DHCP с 192.168.1.254:

Единственное отличие при обновлении аренды адреса DHCP заключается в вызове метода RenewDHCPLease RenewDHCPLease ReleaseDHCPLease вместо метода ReleaseDHCPLease:

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

Отмена и обновление аренды адресов DHCP для всех адаптеров

Отменить или обновить аренду адресов DHCP сразу для всех адаптеров можно с помощью методов Win32_NetworkAdapterConfiguration — ReleaseDHCPLeaseAll и RenewDHCPLeaseAll . Однако эту команду следует применять к классу WMI, а не к отдельному адаптеру, поскольку глобальная отмена и обновление аренды осуществляется на уровне класса, а не отдельного адаптера. Командлет Invoke-CimMethod может вызывать методы класса.

Такой же формат команды используется при вызове метода RenewDHCPLeaseAll:

Создание сетевой папки

Эта команда эквивалентна следующей команде net share в Windows:

Чтобы вызвать метод класса WMI, который принимает параметры, необходимо определить доступные параметры и типы этих параметров. Например, можно вывести список методов Win32_Class с помощью следующих команд:

Используйте следующую команду, чтобы вывести список параметров метода Create .

Также можно ознакомиться с документацией по методу Create класса Win32_Share.

Удаление сетевой папки

Подключение сетевого диска, доступного в Windows

Командлет New-PSDrive может создать диск PowerShell, сопоставленный с общей сетевой папкой.

Тем не менее диски, созданные таким образом, доступны только для сеанса PowerShell, в котором они созданы. Чтобы подключить диск, доступный за пределами PowerShell (или для других сеансов PowerShell), необходимо использовать параметр Persist.

Постоянно сопоставленные диски могут быть недоступны при работе в контексте с повышенными привилегиями. Этот режим используется по умолчанию для Windows UAC. Дополнительные сведения см. в следующей статье:

date

22.09.2021

directory

PowerShell

comments

комментария 42

Допустим, ваша задача – найти в Active Directory все неактивные компьютеры, которые не регистрировались в домене более 120 дней и заблокировать учетные записи этих компьютеров.

Прежде чем приступить к работе с командлетом Get-ADComputer, необходимо подключить модуль Active Directory Module for Windows PowerShell.

Совет. В PowerShell 3.0 (представлен в Windows Server 2012) и выше этот модуль подключается по умолчанию при установке компонента Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> Active Directory модуль для Windows PowerShell. Чтобы использовать командлет Get-ADComputer в клиентских Windows 10,8.1 и Windows 7 нужно скачать и установить RSAT для вашей версии ОС и включить модуль AD-PowerShell из панели управления или командой:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

Модуль Active Directory для Windows PowerShell

Основы синтаксиса и использование командлета Get-ADComputer

Справка о параметрах командлета Get-ADComputer вызывается стандартно с помощью Get-Help:

синтаксис командлета Get-ADComputer

Для получения информации из AD с помощью командлетов модуля AD for Powershell не обязательно иметь права администратора домена, достаточно чтобы учетная запись под которой запускается командлет входила в группу пользователей домена (Authenticated Users / Domain Users).

Чтобы получить информацию о доменной учетной записи конкретного компьютера или сервера, укажите его имя в качестве аргумента параметра —Identity:

Get-ADComputer -Identity SRV-DB01

Get-ADComputer -Identity

Командлет вернул только базовые свойства объекта Computer из AD. Нас интересует время последней регистрации компьютера в домене AD, но этой информация в выводе команды нет. Выведем все доступные свойства данного компьютера из Active Directory:

Get-ADComputer все параметры компьютера в Active Directory

Get-ADComputer -Identity SRV-DB01 -Properties *

С помощью Get-Member можно получить список всех свойств класса Computer в AD:

Get-ADComputer -Filter * -Properties * | Get-Member

Как вы видите, время последнего входа данного компьютера в сеть указано в атрибуте компьютера LastLogonDate – 21.09.2015 0:20:17.

Командлет Get-ADComputer позволяет вывести в результатах команды любые из свойств компьютера. Уберем всю лишнюю информацию, оставив в выводе только значения полей Name и LastLogonDate.

Get-ADComputer -identity SRV-DB01 -Properties * | FT Name, LastLogonDate -Autosize

Табличное представление Get-ADComputer

Итак, мы получили данные о последнем времени регистрации в домене для одного компьютера. Теперь нам нужно изменить команду так, чтобы она возвращала информацию о времени последней регистрации в сети для всех компьютеров домена. Для этого заменим параметр –Identity на —Filter:

Получаем время входа для всех компьютеров домена

Get-ADComputer -Filter * -Properties * | FT Name, LastLogonDate -Autosize

Мы получили таблицу, которая содержит только 2 поля: имя компьютера и дата LastLogonData. Вы можете добавить в эту таблицу другие поля объекта Computer из AD. Чтобы вывести данные о компьютерах в определенном контейнере домена (OU), воспользуйтесь параметром SearchBase:
Get-ADComputer -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -Filter * -Properties * | FT Name, LastLogonDate -Autosize

Отсортируем результаты запроса по времени последнего логина в сеть (поле LastLogonDate) с помощью команды Sort:

Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name, LastLogonDate -Autosize

Итак, мы получили список компьютеров домена и время их последнего входа в сеть Active Directory. Теперь мы хотим заблокировать учетные записи компьютеров, которые не использовались более 120 дней.

С помощью Get-Date получим в переменной значение текущей даты и вычтем из текущей даты 120 дней:

Get-Date adddays

Полученную переменную с датой можно использовать в качестве фильтра запроса Get-ADComputer по полю LastLogonDate

Get-ADComputer -Properties LastLogonDate -Filter | Sort LastLogonDate | FT Name, LastLogonDate -Autosize

Таким образом, мы получили список неактивных компьютеров, не регистрировавшихся в сети более 120 дней. С помощью командлета Set-ADComputer или Disable-ADAccount вы можете отключить эти учетные записи.

Совет. В первый раз лучше протестировать результаты команды с помощью переключателя –WhatIf, благодаря которому команда не вносит никаких изменений, показывая, что произойдет при ее выполнении.

Get-ADComputer -Properties LastLogonDate -Filter | Set-ADComputer -Enabled $false -whatif

Теперь можно заблокировать все полученные учетные записи компьютеров:

Get-ADComputer -Properties LastLogonDate -Filter | Set-ADComputer -Enabled $false

Совет. Список заблокированных, отключенных и неактивных компьютеров и пользователей домена можно получить также с помощью отдельного командлета Search-ADAccount.

Примеры использования командлета Get-ADComputer

Ниже представлены еще несколько полезных примеров команд с использованием командлета Get-ADComputer, которые можно использовать для выборки и поиска компьютеров домена по определенными критериям.

Получить общее количество активных (незаблокированных) компьютеров в Active Directory:

Посчитать количество серверов с Windows Server в домене:

посчитать количество компьютеров и серверов в AD

Получить список компьютеров в определенном OU, имена которых начинаются с BuhPC:

Get-ADComputer -Filter -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -Properties IPv4Address | Format-table Name,DNSHostName,IPv4Address | ft -Wrap –Auto

При поиске по OU вы можете использовать дополнительный параметр -SearchScope 1, который означает, что нужно искать только в корневом разделе. Параметр -SearchScope 2 означает рекурсивный поиск компьютеров во всех вложенных OU.

Выбрать все рабочие станции с ОС Windows 10:

Получить список серверов в домене с версией ОС, IP адресом и установленным Service Pack:
Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -Properties Name,Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack,IPv4Address | Sort-Object -Property Operatingsystem | Select-Object -Property Name,Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address| ft -Wrap –Auto

На выходе получили такую красивую таблицу со списком Windows Server в AD.

get-adcomputer информации о версии windows на компьютерах домена

Атрибут -LDAPFilter позволяет использовать в качестве параметра командлета Get-ADComputer различные LDAP запросы, например:

Get-ADComputer -LDAPFilter "(name=*db*)"|ft

Выбрать заблокированные компьютеры в определенном OU:

Get-ADComputer -filter * -SearchBase ‘OU=Computers, dc=winitpro,dc=loc’ | Where-Object

Чтобы удалить все аккаунты компьютеров в домене, не авторизовавшиеся в домене более 6 месяцев, можете воспользоваться командой:

get-adcomputer -properties lastLogonDate -filter * | where < $_.lastLogonDate -lt (get-date).addmonths(-6) >| Remove-ADComputer

Результат выполнения команды Get-ADComputer можно выгрузить в текстовый файл:

Get-ADComputer -Filter < OperatingSystem -Like '*Windows Server 2008*' >-Properties OperatingSystem | Select DNSHostName, OperatingSystem | Format-Table -AutoSize C:\Script\server_system.txt

Также вы можете получить выборку компьютеров и экспортировать его в CSV файл:

Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8

Или получить HTML файл отчета со списком компьютеров и нужных атрибутов компьютера:

Get-ADComputer -Filter -Properties * | Select-Object Name,OperatingSystem | ConvertTo-Html | Out-File C:\ps\ad_computer.html

html отчеи по компьютерам в домене active directory

Чтобы выполнить определенной действие со всеми компьютерами из полученного списка нужно использовать цикл Foreach. В этом примере мы хотим получить список серверов в домене с моделью и производителем:

$Computers = Get-ADComputer -Filter
Foreach ($Computer in $Computers)
$Hostname = $Computer.Name
$ComputerInfo = (Get-WmiObject -Computername $Hostname Win32_ComputerSystem)
$Manufacturer = $Computer.Manufacturer
$Model = $Computer.Model
Write-Host "Name: $Hostname"
Write-Host "Manufacturer: $Manufacturer"
Write-Host "Model: $Model"
Write-Host " "
$Content = "$Hostname;$Manufacturer;$Model"
Add-Content -Value $Content -Path "C:\PS\ServersInfo.txt"
>

Либо можно использовать более короткий синтаксис цикла. Допустим нам нужно выполнить определенную команду на всех компьютерах в определенном OU (в этом примере мы хотим запустить на всех серверах команду обновления настроек групповых политик):

Затем с помощью следующей команды я могу найти компьютеры, на которых отсутствует или не запушена служба CCMExec:

get-adcomputer -filter -SearchBase “OU=Computers,OU=MSK,DC=winitpro,DC=ru” -properties dNSHostName,extensionAttribute10,LastLogonDate |select-object dNSHostName,extensionAttribute10,LastLogonDate

Всё о PowerShell в Windows и на Linux. Системное администрирование Windows

Test-NetConnection — готовый к использованию командлет для проверки сетевого подключения появился в PowerShell 4.0 (Windows 2012 R2, Windows 8.1 и новее). Этот командлет можно использовать для проверки ответа и доступности удалённого сервера или сетевой службы на нём, портов TCP, заблокированных брандмауэрами, проверки доступности и маршрутизации ICMP. Фактически, командлет Test-NetConnection может заменить сразу несколько стандартных инструментов сетевого администрирования: ping, traceroute, сканер TCP-портов и т. д.

Время от времени любой администратор должен проверять доступность службы на удалённом сервере, проверяя ответ удалённого TCP-порта (например, доступность электронной почты или веб-сервера). Более того, большинство администраторов используют для выполнения такой проверки порта с помощью команды telnet. Например, чтобы убедиться, что служба SMTP отвечает на почтовом сервере (по умолчанию она отвечает на TCP-порту 25), достаточно выполнить команду

Но начиная с Windows 7, клиент telnet стал функцией, которую нужно устанавливать отдельно. Давайте посмотрим, как проверить открытые/закрытые TCP-порты с помощью PowerShell.

Основное преимущество командлета Test-NetConnection заключается в том, что он уже входит в состав всех современных версий Windows, и вам не нужно устанавливать его отдельно. Командлет является частью модуля NetTCPIP (начиная с PoSh v4.0).

Подсказка: вы можете проверить текущую установленную версию PowerShell с помощью команды:


Значение 7 в столбце Major означает, что на вашем компьютере установлена оболочка PowerShell 7.2.

Тестирование открытости/закрытости TCP-портов с помощью Test-NetConnection

Примечание: используя командлет Test-NetConnection, вы можете проверить только подключение к порту TCP, и он не применим для проверки доступности удалённых портов UDP.

Укороченная версия той же команды выглядит так:


Рассмотрим результат выполнения команды:

Как видите, командлет преобразует имя сервера в IP-адрес и проверяет доступность порта TCP. На указанном сервере TCP-порт 80 (RemotePort : 80) открыт (TcpTestSucceeded : True).

Или открытость порта RDP (3389):

Вы можете перечислить все параметры, которые возвращает командлет Test-NetConnection:


Обратите внимание на строку в выводе:

Это означает следующее:

  1. Перед проверкой порта командлет пытается выполнить пинг
  2. В данном случае компьютер не ответил на пинг (такое бывает — даже включенные компьютеры не обязаны отвечать на пинг, это можно изменить в настройках файервола)
  3. Даже при неудачном пинге Test-NetConnection всё равно проверяет доступность порта

Если вам нужно только посмотреть, доступен ли порт, его можно проверить быстрее:


Командлет вернул True, что означает, что удалённый порт открыт.

Подсказка: в более ранних версиях PowerShell вы могли проверить доступность TCP-порта следующим образом:


В Windows 10/Windows Server 2016 вы можете использовать командлет Test-NetConnection для отслеживания маршрута к удалённому серверу с помощью параметра -TraceRoute (аналог команды tracert в Windows). Параметр -Hops позволяет ограничить максимальное количество хопов (узлов) при проверке маршрута.


Командлет вернул суммарную задержку сети при доступе к серверу в миллисекундах (PingReplyDetails (RTT) : 36 ms) и все IP-адреса маршрутизаторов на пути к целевому серверу.

Test-NetConnection в скриптах мониторинга PowerShell

Следующая команда позволяет вам проверить доступность определённого порта на нескольких серверах, список которых хранится в текстовом файле list_servers.txt (расположен в папке c:\PS\). Нам нужны серверы, на которые не отвечает указанный сервис:

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

Например, вы можете проверить доступность базовых служб на всех контроллерах домена (список контроллеров домена можно получить с помощью командлета Get-ADDomainController). Давайте проверим следующие службы на DC (инструмент PortQry имеет аналогичное правило «Domain and trusts»):

  • RPC – TCP/135
  • LDAP – TCP/389
  • LDAP – TCP/3268
  • DNS – TCP/53
  • Kerberos – TCP/88
  • SMB – TCP/445

Скрипт проверит указанные TCP-порты на контроллерах домена, и, если один из портов недоступен, он выделит его красным цветом (вы можете запустить этот скрипт PowerShell как службу Windows).

А это чуть модифицированная версия скрипта, в которой список серверов считывается из файла C:\Users\MiAl\Documents\list_servers.txt, а также выводятся имена хостов, чтобы было понятно, чьи именно порты проверяются:

Код скрипта сохранён в файл port_checker.ps1, пример запуска:


Простой сканер IP-сетей/портов с помощью PowerShell

Вы также можете реализовать простой сетевой сканер портов и IP-подсетей для сканирования удалённых серверов или подсетей на предмет открытых/закрытых TCP-портов.

Просканируем диапазон IP-адресов в поисках открытого порта 80:

А этот пример просканирует диапазон TCP-портов от 1 до 1024 на указанном удалённом сервере:

PowerShell: примеры скриптов по сбору информации о компьютерах

Для начала рассмотрим команду, собирающую сведения о рабочих столах локального компьютера.

Эта команда возвращает сведения обо всех рабочих столах, вне зависимости от их использования.

Чтобы отфильтровать метаданные, используйте оператор конвейера (|) для отправки результатов команды Get-CimInstance в Select-Object -ExcludeProperty "CIM*" .

Вывод сведений о BIOS

Класс WMI Win32_BIOS возвращает довольно компактные и полные сведения о системной BIOS локального компьютера:

Вывод сведений о процессоре

Общие сведения о процессоре можно получить с помощью класса Win32_Processor инструментария WMI, но вам, скорее всего, потребуется отфильтровать полученные данные:

Чтобы получить общую строку описания семейства процессора, достаточно вернуть свойство SystemType:

Вывод производителя и модели компьютера

Сведения о модели компьютера также доступны в Win32_ComputerSystem. Чтобы получить данные поставщика вычислительной техники (OEM), стандартные отображаемые выходные данные фильтровать не нужно:

Выходные данные из команд, подобных показанной выше и возвращающих сведения напрямую от аппаратного обеспечения, не могут быть дополнены. Иногда сведения неверно сконфигурированы производителем оборудования и недоступны для запроса.

Вывод установленных исправлений

Список всех установленных исправлений можно получить с помощью Win32_QuickFixEngineering:

Этот класс возвращает список исправлений в следующем виде:

Для получения более кратких сведений нужно исключить некоторые свойства. Параметр Property в Get-CimInstance позволяет выбрать только идентификаторы HotFixID, однако на самом деле возвращается больше данных, так как по умолчанию отображаются все метаданные:

Дополнительные данные выводятся, так как параметр Property в Get-CimInstance ограничивает свойства, возвращаемые из экземпляров класса WMI, но не объекты, возвращаемые оболочке PowerShell. Командлет Select-Object позволяет сократить возвращаемые выходные данные:

Вывод сведений о версии операционной среды

Свойства класса Win32_OperatingSystem включают сведения о версии операционной системы и пакета обновления. Эти свойства можно выбрать явным образом, чтобы получить сводные данные по версиям из Win32_OperatingSystem:

С параметром Property в Select-Object можно использовать подстановочные символы. Поскольку в рассматриваемом случае важны все свойства, имена которых начинаются с Build либо с ServicePack, указанную строку можно сократить:

Вывод локальных пользователей и владельца

Общие сведения о локальных пользователях — количество лицензированных пользователей, текущее число пользователей и имя владельца — можно получить, выбрав свойства класса Win32_OperatingSystem. Отображаемые свойства можно указать явным образом:

В более сжатом варианте используются подстановочные символы:

Получение сведений о доступном месте на диске

Чтобы получить сведения о дисковом пространстве и свободном месте на локальных дисках, можно воспользоваться классом Win32_LogicalDisk инструментария WMI. Для просмотра следует выбрать только те экземпляры, у которых свойство DriveType принимает значение 3, так как именно оно используется инструментарием WMI для постоянных жестких дисков.

Получение сведений о сеансах входа в систему

Общие сведения о сеансах входа в систему, связанных с пользователями, можно получить через класс Win32_LogonSession инструментария WMI:

Получение сведений о пользователе, выполнившем вход на компьютер

Имя пользователя, выполнившего вход на определенный компьютер, можно отобразить с помощью Win32_ComputerSystem. Приведенная ниже команда возвращает только пользователей, выполнивших вход на рабочий стол системы:

Получение сведений о местном времени компьютера

Сведения о текущем местном времени определенного компьютера можно получить с помощью класса Win32_LocalTime инструментария WMI.

Отображение состояния службы

Для просмотра состояния всех служб на определенном компьютере можно локально воспользоваться командлетом Get-Service . Для удаленных систем можно использовать класс Win32_Service инструментария WMI. Если использовать Select-Object для фильтрования Status, Name и DisplayName, формат вывода будет идентичен формату вывода командлета Get-Service :

Чтобы полностью отобразить службы с очень длинными именами, может потребоваться использовать командлет Format-Table с параметрами AutoSize и Wrap, позволяющими оптимизировать ширину столбцов и переносить длинные имена на следующие строки вместо их усечения:

Читайте также: