Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этот пример применяется только к платформам Windows.
Так как TCP/IP является наиболее часто используемым сетевым протоколом, большинство задач администрирования сетевых протоколов низкого уровня включают tcp/IP. В этом разделе мы используем PowerShell и WMI для выполнения этих задач.
Список 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. Можно использовать параметр ExcludePropertySelect-Object
для скрытия свойств с именами, начинающимися с WINS или IPX.
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExcludeProperty IPX*,WINS*
Эта команда возвращает подробные сведения о DHCP, DNS, маршрутизации и других дополнительных свойствах IP-конфигурации.
Пингование компьютеров
Вы можете выполнить простое выполнение команды ping на компьютере с помощью Win32_PingStatus. Данная команда выполняет ping, но возвращает длинный вывод.
Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"
Ответ от Win32_PingStatus содержит 29 свойств. Вы можете использовать Format-Table
для выбора наиболее интересных свойств. Параметр Format-Table
AutoSize изменяет размер столбцов таблицы, чтобы они отображались правильно в 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 указывает на успешный ping.
Вы можете использовать массив для отправки ping на несколько компьютеров с помощью одной команды. Поскольку существует несколько адресов, используйте 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
.
Можно выполнить пинг всей подсети, добавив каждое значение в диапазоне к частичному адресу в операторе ping.
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-домен для автоматического разрешения имен, используйте метод SetDNSDomainWin32_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
, можно использовать параметр свойства 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