Выполнение задач по работе с сетями
Этот пример применяется только к платформам Windows.
Большая часть задач администрирования низкоуровневых сетевых протоколов связана с протоколом TCP/IP, так как это наиболее распространенный сетевой протокол. В этом разделе описано использование инструментария WMI и PowerShell для выполнения этих задач.
Перечисление IP-адресов для компьютера
Список всех IP-адресов, используемых локальным компьютером, возвращает следующая команда:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExpandProperty IPAddress
Учитывая, что свойство IPAddress объекта Win32_NetworkAdapterConfiguration является массивом, необходимо использовать параметр ExpandProperty со значением Select-Object
для просмотра всего списка адресов.
10.0.0.1
fe80::60ea:29a7:a233:7cb7
2601:600:a27f:a470:f532:6451:5630:ec8b
2601:600:a27f:a470:e167:477d:6c5c:342d
2601:600:a27f:a470:b021:7f0d:eab9:6299
2601:600:a27f:a470:a40e:ebce:1a8c:a2f3
2601:600:a27f:a470:613c:12a2:e0e0:bd89
2601:600:a27f:a470:444f:17ec:b463:7edd
2601:600:a27f:a470:10fd:7063:28e9:c9f3
2601:600:a27f:a470:60ea:29a7:a233:7cb7
2601:600:a27f:a470::2ec1
С помощью командлета Get-Member
можно увидеть, что свойство IPAddress является массивом:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Get-Member -Name IPAddress
TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_NetworkAdapterConfiguration
Name MemberType Definition
---- ---------- ----------
IPAddress Property string[] IPAddress {get;}
Свойство IPAddress каждого сетевого адаптера в действительности представляет собой массив. Фигурные скобки в определении указывают, что IPAddress не является значением System.String , а массивом значений System.String .
Перечисление данных IP-конфигурации
Для отображения подробных данных IP-конфигурации каждого сетевого адаптера воспользуйтесь следующей командой:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true
По умолчанию отображается очень небольшая часть доступных сведений об объекте конфигурации сетевого адаптера. Для более глубокого изучения и устранения неполадок воспользуйтесь командлетом Select-Object
или командлетом форматирования, например Format-List
, чтобы задать отображаемые свойства.
В современных сетях TCP/IP вам, скорее всего, больше не понадобятся свойства IPX или WINS. Вы можете использовать параметр ExcludeProperty командлета Select-Object
, чтобы скрыть свойства, имена которых начинаются на WINS или IPX.
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExcludeProperty IPX*,WINS*
Эта команда выводит подробные сведения о DHCP, DNS, маршрутизации и других менее значительных свойствах IP-конфигурации.
Подключение компьютеров
Простую проверку связи с компьютером можно выполнить с помощью Win32_PingStatus. Следующая команда производит проверку связи, но при этом выводит большой объем сведений:
Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"
Удобнее отображать сводные данные, содержащие свойства Address, ResponseTime и StatusCode, как это делает приведенная ниже команда. Параметр Autosize командлета Format-Table
изменяет размер столбцов таблицы для их правильного отображения в PowerShell.
Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'" |
Format-Table -Property Address,ResponseTime,StatusCode -Autosize
Address ResponseTime StatusCode
------- ------------ ----------
127.0.0.1 0 0
Значение 0 свойства StatusCode указывает на успешно выполненную проверку связи.
Для проверки связи с несколькими компьютерами с помощью одной команды можно использовать массив. Так как адресов несколько, для проверки связи с каждым адресом по отдельности можно использовать ForEach-Object
:
'127.0.0.1','localhost','bing.com' |
ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
Select-Object -Property Address,ResponseTime,StatusCode
}
Вы можете использовать один и тот же формат команды для проверки всех адресов в подсети, таких как частная сеть, использующая сетевой номер 192.168.1.0 и стандартную маску подсети класса C (255.255.255.0). Только адреса в диапазоне от 192.168.1.1 до 192.168.1.254 являются законными локальными адресами (0 всегда зарезервированы для номера сети, а 255 — это адрес трансляции подсети).
Чтобы представить массив чисел от 1 до 254 в PowerShell, используйте выражение 1..254
.
Таким образом, полную проверку связи с подсетью можно осуществить, добавив все значения в диапазоне к частичному адресу в операторе проверки связи:
1..254| ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_'") } |
Select-Object -Property Address,ResponseTime,StatusCode
Такой метод формирования диапазона адресов может быть использован в любых подобных случаях. Полный набор адресов можно сформировать следующим образом:
$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}
Получение свойств сетевого адаптера
Ранее упоминалось о возможности извлечения общих свойств конфигурации с помощью класса Win32_NetworkAdapterConfiguration. Хотя не строго сведения о TCP/IP, сведения о сетевом адаптере, такие как MAC-адреса и типы адаптеров, могут быть полезны для понимания того, что происходит с компьютером. Сводные данные можно получить с помощью следующей команды:
Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .
Назначение домена DNS для сетевого адаптера
Чтобы назначить домен DNS для автоматического разрешения имен, нужно использовать метод SetDNSDomain класса Win32_NetworkAdapterConfiguration. Параметр Запрос со значением Invoke-CimMethod
принимает строку WQL-запроса. Командлет вызывает метод, указанный для каждого экземпляра, возвращаемого запросом.
$wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True'
$args = @{ DnsDomain = 'fabrikam.com'}
Invoke-CimMethod -MethodName SetDNSDomain -Arguments $args -Query $wql
Фильтрация IPEnabled=True
необходима, так как даже в сети, которая использует только TCP/IP, несколько конфигураций сетевого адаптера на компьютере не являются истинными адаптерами TCP/IP. Они — это общие элементы программного обеспечения, поддерживающие RAS, VPN, QoS и другие службы для всех адаптеров, поэтому у них нет собственного адреса.
Выполнение задач конфигурации DHCP
Изменение сведений DHCP, так же как и настройка DNS, включает работу с набором сетевых адаптеров. Существует несколько различных действий, которые можно выполнить с помощью WMI.
Поиск адаптеров с поддержкой DHCP
Найти на компьютере адаптеры, поддерживающие DHCP, можно с помощью следующей команды:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"
Чтобы исключить из поиска адаптеры, имеющие проблемы в IP-конфигурации, можно добавить требование поддержки протокола IP:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true"
Получение свойств DHCP
Свойства адаптера, относящиеся к протоколу DHCP, обычно начинаются с DHCP
, поэтому для отображения только этих свойств можно использовать параметр Property командлета Format-Table
:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true" |
Format-Table -Property DHCP*
Включение DHCP на каждом адаптере
Чтобы включить поддержку DHCP на всех адаптерах, используйте команду:
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE IPEnabled=True and DHCPEnabled=False'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql
Использование оператора фильтра IPEnabled=True and DHCPEnabled=False
позволяет избежать включения DHCP, когда он уже включен.
Освобождение и продление аренды DHCP на определенных адаптерах
Экземпляры класса Win32_NetworkAdapterConfiguration содержат методы ReleaseDHCPLease
и RenewDHCPLease
. Оба метода используются одинаково. Обычно их применяют лишь при необходимости отмены или обновления аренды адресов для адаптера в отдельной подсети. Простейшим способом фильтрации адаптеров в подсети является выбор лишь тех адаптеров, которые используют шлюз для этой подсети. Например, следующая команда отменяет все аренды адресов DHCP для адаптеров на локальном компьютере, которые арендуют адреса DHCP с 192.168.1.254:
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql
Единственное отличие при обновлении аренды адреса DHCP заключается в вызове метода RenewDHCPLease
вместо метода ReleaseDHCPLease
:
$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName RenewDHCPLease -Query $wql
Примечание.
Если эти методы применяются на удаленном компьютере, возможна потеря доступа к удаленной системе, которая подключена через адаптер с отмененной или обновленной арендой.
Освобождение и продление аренды DHCP на всех адаптерах
Отменить или обновить аренду адресов DHCP сразу для всех адаптеров можно с помощью методов Win32_NetworkAdapterConfiguration — ReleaseDHCPLeaseAll
и RenewDHCPLeaseAll
.
Однако эту команду следует применять к классу WMI, а не к отдельному адаптеру, поскольку глобальная отмена и обновление аренды осуществляется на уровне класса, а не отдельного адаптера. Командлет Invoke-CimMethod
может вызывать методы класса.
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll
Такой же формат команды используется при вызове метода RenewDHCPLeaseAll:
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll
Создание сетевой папки
Создать сетевую папку можно с помощью метода Create
класса Win32_Share:
Invoke-CimMethod -ClassName Win32_Share -MethodName Create -Arguments @{
Path = 'C:\temp'
Name = 'TempShare'
Type = [uint32]0 #Disk Drive
MaximumAllowed = [uint32]25
Description = 'test share of the temp folder'
}
Эта команда эквивалентна следующей команде net share
в Windows:
net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"
Чтобы вызвать метод класса WMI, который принимает параметры, необходимо определить доступные параметры и типы этих параметров. Например, можно вывести список методов Win32_Class с помощью следующих команд:
(Get-CimClass -ClassName Win32_Share).CimClassMethods
Name ReturnType Parameters Qualifiers
---- ---------- ---------- ----------
Create UInt32 {Access, Description, MaximumAllowed, Name…} {Constructor, Implemented, MappingStrings, Stati…
SetShareInfo UInt32 {Access, Description, MaximumAllowed} {Implemented, MappingStrings}
GetAccessMask UInt32 {} {Implemented, MappingStrings}
Delete UInt32 {} {Destructor, Implemented, MappingStrings}
Используйте следующую команду, чтобы вывести список параметров метода Create
.
(Get-CimClass -ClassName Win32_Share).CimClassMethods['Create'].Parameters
Name CimType Qualifiers ReferenceClassName
---- ------- ---------- ------------------
Access Instance {EmbeddedInstance, ID, In, MappingStrings…}
Description String {ID, In, MappingStrings, Optional}
MaximumAllowed UInt32 {ID, In, MappingStrings, Optional}
Name String {ID, In, MappingStrings}
Password String {ID, In, MappingStrings, Optional}
Path String {ID, In, MappingStrings}
Type UInt32 {ID, In, MappingStrings}
Также можно ознакомиться с документацией по методу Create класса Win32_Share.
Удаление сетевой папки
Сетевую папку можно удалить с помощью Win32_Share, но этот процесс немного отличается от создания, так как требует получения конкретного удаляемого экземпляра, а не класса Win32_Share. В следующем примере показано удаление сетевой папки TempShare:
$wql = 'SELECT * from Win32_Share WHERE Name="TempShare"'
Invoke-CimMethod -MethodName Delete -Query $wql
Подключение сетевой диск, доступный для Windows
Командлет New-PSDrive
может создать диск PowerShell, сопоставленный с сетевой папкой.
New-PSDrive -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
Однако диски, созданные таким образом, доступны только сеансу PowerShell, где они создаются. Чтобы сопоставить диск, доступный за пределами PowerShell (или с другими сеансами PowerShell), необходимо использовать параметр "Сохранить ".
New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"
Примечание.
Постоянно сопоставленные диски могут быть недоступны при работе в контексте с повышенными привилегиями. Этот режим используется по умолчанию для Windows UAC. Дополнительные сведения см. в следующей статье:
PowerShell