Test netconnection не распознано как имя командлета
Перейти к содержимому

Test netconnection не распознано как имя командлета

  • автор:

Test-Connection

Отправляет пакеты эхо-запроса ICMP или pings на один или несколько компьютеров.

Синтаксис

Test-Connection [-TargetName] [-Ping] [-IPv4] [-IPv6] [-ResolveDestination] [-Source ] [-MaxHops ] [-Count ] [-Delay ] [-BufferSize ] [-DontFragment] [-Quiet] [-TimeoutSeconds ] []
Test-Connection [-TargetName] -Repeat [-Ping] [-IPv4] [-IPv6] [-ResolveDestination] [-Source ] [-MaxHops ] [-Delay ] [-BufferSize ] [-DontFragment] [-Quiet] [-TimeoutSeconds ] []
Test-Connection [-TargetName] -Traceroute [-IPv4] [-IPv6] [-ResolveDestination] [-Source ] [-MaxHops ] [-Quiet] [-TimeoutSeconds ] []
Test-Connection [-TargetName] -MtuSize [-IPv4] [-IPv6] [-ResolveDestination] [-Quiet] [-TimeoutSeconds ] []
Test-Connection [-TargetName] -TcpPort [-IPv4] [-IPv6] [-ResolveDestination] [-Source ] [-Count ] [-Delay ] [-Repeat] [-Quiet] [-TimeoutSeconds ] [-Detailed] []

Описание

Командлет Test-Connection отправляет пакеты запросов на эхо-запросы (ICMP) протокола управления Интернетом или pings на один или несколько удаленных компьютеров и возвращает ответы на эхо-ответы. Этот командлет можно использовать для определения того, можно ли связаться с определенным компьютером через IP-сеть.

Параметры можно использовать для указания как отправки Test-Connection , так и для получения компьютеров, для выполнения команды в качестве фонового задания, задания времени ожидания и количества пингов, а также для настройки подключения и проверки подлинности.

В отличие от знакомой команды ping, Test-Connection возвращает объект Test Подключение ionCommand+PingStatus, который можно исследовать в PowerShell. Параметр Quiet возвращает логическое значение в объекте System.Boolean для каждого проверенного подключения. Если тестируются несколько подключений, возвращается массив логических значений.

Примеры

Пример 1. Отправка запросов эхо на удаленный компьютер

Этот пример отправляет пакеты эхо-запроса с локального компьютера на компьютер Server01.

Test-Connection -TargetName Server01 -IPv4 Destination: Server01 Ping Source Address Latency BufferSize Status (ms) (B) ---- ------ ------- ------- ---------- ------ 1 ADMIN1 10.59.137.44 24 32 Success 2 ADMIN1 10.59.137.44 39 32 Success 3 ADMIN1 * * * TimedOut 4 ADMIN1 10.59.137.44 28 32 Success

Test-Connection использует параметр TargetName для указания компьютера Server01. Параметр IPv4 указывает протокол для теста.

Ряд объектов Test Подключение ionCommand+PingStatus отправляются в выходной поток, один объект на ответ ping от целевого компьютера.

Пример 2. Отправка запросов эхо на несколько компьютеров

Этот пример отправляет запросы связи с локального компьютера на несколько удаленных компьютеров.

Test-Connection -TargetName Server01, Server02, Server12

Пример 3. Использование параметров для настройки команды тестирования

В этом примере используются параметры Test-Connection для настройки команды. Локальный компьютер отправляет тест проверки ping на удаленный компьютер.

Test-Connection -TargetName Server01 -Count 3 -Delay 2 -MaxHops 255 -BufferSize 256

Test-Connection использует параметр TargetName для указания Server01. Параметр Count указывает три проверки ping отправляются на компьютер Server01 с задержкой 2-секундных интервалов.

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

Пример 4. Запуск теста в качестве фонового задания

В этом примере показано, как выполнить Test-Connection команду в качестве фонового задания PowerShell.

$job = Start-Job -ScriptBlock < Test-Connection -TargetName (Get-Content -Path "Servers.txt") >$Results = Receive-Job $job -Wait

Команда Start-Job использует Test-Connection командлет для проверки связи с множеством компьютеров в организации. Значение параметра TargetName — это Get-Content команда, которая считывает список имен компьютеров из Servers.txt файла. Команда использует Start-Job командлет для выполнения команды в качестве фонового задания и сохраняет задание в переменной $job .

Команда Receive-Job будет указана до -Wait завершения задания, а затем получает результаты и сохраняет их в переменной $Results .

Пример 5. Создание сеанса только в случае успешного выполнения теста подключения

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

if (Test-Connection -TargetName Server01 -Quiet)

Командлет Test-Connection отправляет Server01 связь с компьютером с предоставленным параметром Quiet . Результирующее значение равно $True , если любой из четырех pings успешно выполнен. Если ни одна из ping не выполнена успешно, значение равно $False .

Test-Connection Если команда возвращает значение $True , команда использует New-PSSession командлет для создания PSSession.

Пример 6. Использование параметра Traceroute

В PowerShell 6.0 параметр Traceroute сопоставляет маршрут между локальным компьютером и удаленным назначением, указанным с параметром TargetName .

Test-Connection -TargetName www.google.com -Traceroute Target: google.com Hop Hostname Ping Latency Status Source TargetAddress (ms) --- -------- ---- ------- ------ ------ ------------- 1 172.20.0.1 1 4 Success Lira 172.217.9.174 1 172.20.0.1 2 3 Success Lira 172.217.9.174 1 172.20.0.1 3 2 Success Lira 172.217.9.174 2 12.108.153.193 1 3 Success Lira 172.217.9.174 2 12.108.153.193 2 3 Success Lira 172.217.9.174 2 12.108.153.193 3 2 Success Lira 172.217.9.174 3 12.244.85.177 1 11 Success Lira 172.217.9.174 3 12.244.85.177 2 12 Success Lira 172.217.9.174 3 12.244.85.177 3 12 Success Lira 172.217.9.174 4 * 1 14 DestinationNetw… Lira 172.217.9.174 4 * 2 * TimedOut Lira 172.217.9.174 4 * 3 20 DestinationNetw… Lira 172.217.9.174 5 * 1 * TimedOut Lira 172.217.9.174 5 * 2 15 DestinationNetw… Lira 172.217.9.174 5 * 3 * TimedOut Lira 172.217.9.174 6 * 1 18 DestinationNetw… Lira 172.217.9.174 6 * 2 * TimedOut Lira 172.217.9.174 6 * 3 16 DestinationNetw… Lira 172.217.9.174 7 * 1 * TimedOut Lira 172.217.9.174 7 * 2 * TimedOut Lira 172.217.9.174 7 * 3 * TimedOut Lira 172.217.9.174 8 * 1 * TimedOut Lira 172.217.9.174 8 * 2 * TimedOut Lira 172.217.9.174 8 * 3 * TimedOut Lira 172.217.9.174 9 * 1 * TimedOut Lira 172.217.9.174 9 * 2 * TimedOut Lira 172.217.9.174 9 * 3 * TimedOut Lira 172.217.9.174 10 * 1 * TimedOut Lira 172.217.9.174 10 * 2 * TimedOut Lira 172.217.9.174 10 * 3 * TimedOut Lira 172.217.9.174 11 172.217.9.174 1 23 Success Lira 172.217.9.174 11 172.217.9.174 2 21 Success Lira 172.217.9.174 11 172.217.9.174 3 22 Success Lira 172.217.9.174

Команда Test-Connection вызывается с параметром Traceroute . Результаты, являющиеся [Microsoft.PowerShell.Commands.TestConnectionCommand+TraceStatus] объектами, являются выходными данными в поток выходных данных Success .

Пример 7. Получение подробных выходных данных для теста TCP-подключения

При использовании подробного параметра этот командлет возвращает подробные сведения о состоянии попыток ПОДКЛЮЧЕНИЯ TCP.

Test-Connection bing.com -TCPPort 443 -Detailed -Count 4 Target: bing.com Id Source Address Port Latency(ms) Connected Status -- ------ ------- ---- ----------- --------- ------ 1 circumflex 2620:1ec:c11::200 443 12 True Success 2 circumflex 2620:1ec:c11::200 443 14 True Success 3 circumflex 2620:1ec:c11::200 443 17 True Success 4 circumflex 2620:1ec:c11::200 443 17 True Success

Параметры

-BufferSize

Указывает размер (в байтах) буфера, отправленного с помощью этой команды. Значение по умолчанию: 32.

Type: Int32
Aliases: Size, Bytes, BS
Position: Named
Default value: 32
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Count

Указывает число отправляемых запросов проверки связи. Значение по умолчанию — 4.

Type: Int32
Position: Named
Default value: 4
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Delay

Задает интервал между проверками связи в секундах.

Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Detailed

При использовании подробного параметра этот командлет возвращает подробные сведения о состоянии попыток ПОДКЛЮЧЕНИЯ TCP.

Этот параметр добавлен в PowerShell 7.4.

Type: SwitchParameter
Position: Named
Default value: False
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-DontFragment

Этот параметр задает флаг «Не фрагментировать » в заголовке IP- адреса. Этот параметр можно использовать с параметром BufferSize для проверки размера MTU пути. Дополнительные сведения о Path MTU см . в статье «Обнаружение пути MTU » в википедии.

Type: SwitchParameter
Position: Named
Default value: False
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-IPv4

Заставляет командлет использовать протокол IPv4 для теста.

Type: SwitchParameter
Position: Named
Default value: False
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-IPv6

Заставляет командлет использовать протокол IPv6 для теста.

Type: SwitchParameter
Position: Named
Default value: False
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-MaxHops

Задает максимальное количество прыжков, которое может быть отправлено сообщение запроса ICMP. Значение по умолчанию контролируется операционной системой. Значение по умолчанию для Windows 10 и выше — 128 прыжков.

Type: Int32
Aliases: Ttl, TimeToLive, Hops
Position: Named
Default value: 128
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-MtuSize

Этот параметр используется для обнаружения размера MTU пути. Командлет возвращает объект PingReply#MTUSize , содержащий размер MTU пути к целевому объекту. Дополнительные сведения о Path MTU см . в статье «Обнаружение пути MTU » в википедии.

Type: SwitchParameter
Aliases: MtuSizeDetect
Position: Named
Default value: False
Required: True
Accept pipeline input: False
Accept wildcard characters: False

-Ping

Вызывает командлет для выполнения теста проверки ping. Это режим по умолчанию для командлета Test-Connection .

Type: SwitchParameter
Position: Named
Default value: True
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Quiet

Параметр Quiet возвращает логическое значение. Использование этого параметра подавляет все ошибки.

Каждое проверенное соединение возвращает логическое значение. Если параметр TargetName указывает несколько компьютеров, возвращается массив логических значений.

Если любая связь с заданным целевым объектом успешно выполнена, $True возвращается.

Если возвращается сбой $False всех пингов к заданному целевому объекту.

Type: SwitchParameter
Position: Named
Default value: False
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Repeat

Вызывает непрерывное отправку запросов связи командлетом. Если значение TargetName является массивом целевых объектов, командлет повторяет запросы связи только для первого целевого объекта. Он игнорирует оставшиеся целевые объекты. Этот параметр нельзя использовать с параметром Count .

Type: SwitchParameter
Aliases: Continuous
Position: Named
Default value: False
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-ResolveDestination

Вызывает попытку командлета разрешить DNS-имя целевого объекта. При использовании в сочетании с параметром Traceroute DNS-имена всех промежуточных узлов также будут извлечены, если это возможно.

Type: SwitchParameter
Position: Named
Default value: False
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Source

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

Этот параметр не поддерживается в PowerShell версии 6 и более поздних версий. При предоставлении этого параметра возникает ошибка.

Type: String
Position: Named
Default value: Local computer
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-TargetName

Указывает компьютеры для тестирования. Введите имена компьютеров или IP-адреса в формате IPv4 или IPv6.

Type: String [ ]
Aliases: ComputerName
Position: 0
Default value: None
Required: True
Accept pipeline input: True
Accept wildcard characters: False

-TcpPort

Указывает номер TCP-порта в целевом объекте, который будет использоваться в тесте TCP-подключения.

Командлет пытается сделать TCP-подключение к указанному порту в целевом объекте.

  • Командлет возвращается $True , если подключение выполнено.
  • Командлет возвращается $False , если соединение не сделано.
Type: Int32
Position: Named
Default value: None
Required: True
Accept pipeline input: False
Accept wildcard characters: False

-TimeoutSeconds

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

Этот параметр появился в PowerShell 6.0.

Type: Int32
Position: Named
Default value: 5 seconds
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Traceroute

Приводит к тому, что командлет выполняет проверку трассировки. При использовании этого параметра командлет возвращает TestConnectionCommand+TraceStatus объект.

Type: SwitchParameter
Position: Named
Default value: False
Required: True
Accept pipeline input: False
Accept wildcard characters: False

Входные данные

None

Невозможно передать объекты в этот командлет.

Выходные данные

Microsoft.PowerShell.Commands.TestConnectionCommand+PingStatus

По умолчанию этот командлет возвращает объект Test Подключение ionCommand+PingStatus для каждого ответа проверки связи.

Microsoft.PowerShell.Commands.TestConnectionCommand+TraceStatus

При использовании параметра Traceroute этот командлет возвращает объект Test Подключение ionCommand+TraceStatus для каждого ответа связи по маршруту.

При использовании параметров Quiet или TcpPort этот командлет возвращает логическое значение. Если командлет проверяет несколько подключений, он возвращает массив логических значений.

Microsoft.PowerShell.Commands.TestConnectionCommand+PingMtuStatus

При использовании параметра MtuSize этот командлет возвращает объект Test Подключение ionCommand+PingMtuStatus для каждого ответа связи.

Microsoft.PowerShell.Commands.TestConnectionCommand+TcpPortStatus

При использовании подробного параметра этот командлет возвращает объект Test Подключение ionCommand+TcpPortStatus, показывающий состояние TCP-подключения.

Примечания

В Linux с помощью параметра BufferSize или любого сочетания параметров с набором параметров MtuSizeDetect , который приводит к тому, что размер буфера, не относящийся к умолчанию, может потребоваться sudo 32 байта. В этих случаях Test-Command вызывает исключение с сообщением, указывающим, что sudo это необходимо.

Связанные ссылки

  • Restart-Computer
  • Stop-Computer

Совместная работа с нами на GitHub

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

Настраиваем сетевые параметры Windows с PowerShell (IP адрес, DNS, шлюз, маршруты)

date

05.04.2023

user

itpro

directory

PowerShell, Windows 10, Windows 11, Windows Server 2019

comments

комментариев 15

В Windows вы можете управлять настройками сетевых адаптеров не только из графического интерфейса, но из командной строки PowerShell. В этой статье мы рассмотрим основные командлеты, которые позволяют узнать текущий адрес сетевого адаптера, назначить статический IP адрес, DNS сервера, или настроить сетевой интерфейс на получение конфигурации IP от DHCP сервера. Вы можете использовать эти командлеты для настройки сети как в Windows 10/11, так и в Windows Server (или версии Sever Core), в Hyper-V Server, для изменения настроек IP сетевых адаптеров на удаленных компьютерах, и в PowerShell скриптах.

В предыдущих версиях в Windows для управления сетевыми настройками из cmd использовалась из CLI использовалась команда netsh. В PowerShell 3.0 и выше для управления сетевыми настройками Windows можно использовать встроенный PowerShell модуль NetTCPIP.

Чтобы получить список командлетов в этом модуле, выполните:

get-command -module NetTCPIP

модуль powershell NetTCPIP для управления сетевыми настройками в windows

В этот модуль также входит командлет Test-NetConnection, который можно использовать для проверки доступности TCP портов на удаленных компьютерах.

Управление сетевыми адаптерами в Windows из PowerShell

Выведите список доступных сетевых интерфейсов в Windows:

Командлет возвращает имя интерфейса, состояние (Up/Down), MAC адрес, скорость на порту.

В этом примере у меня на компьютере несколько сетевых адаптеров (кроме физического подключения Ethernet и WiFi есть несколько сетевых интерфейсов от Hyper-V и VMWare Player).

Чтобы вывести только активные физические сетевые интерфейсы:

Get-NetAdapter

Можно вывести только определенные параметры сетевых адаптеров, например: имя, скорость, состояние и MAC адрес:

Get-NetAdapter |Select-Object name,LinkSpeed,InterfaceOperationalStatus,MacAddress

powershell получить mac адрес сетевых адаптеров и скорость подключения

В Windows могут присутствовать скрытые сетевые адаптеры. Чтобы вывести их все, добавьте параметр IncludeHidden:

Команда вернет в том числе все виртуальные WAN Miniport адаптеры, которые используются для различных типов подключений включая VPN. Перезапуск этих адаптеров часто позволяет решить некоторые ошибки VPN подключений с помощью встроенного клиента Windows. Для управления сетевыми подключениями VPN доступны отдельные команды PowerShell.

Вы можете обращаться к сетевым интерфейсам по их именам или индексам (столбец ifIndex). В нашем примере, чтобы выбрать физический LAN адаптер Intel 82574L нужно набрать команду:

Get-NetAdapter -Name Ethernet0

Get-NetAdapter -InterfaceIndex 8

Get-NetAdapter выбрать сетевое подключене по имени или индексу

Можно изменить имя адаптера:

Rename-NetAdapter -Name Ethernet0 -NewName LAN

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

Get-NetAdapter -InterfaceIndex 13| Disable-NetAdapter

При включении интерфейса нельзя указать его индекс, т.к. он не присвоен. Включите адаптер по его имени:

Enable-NetAdapter -InterfaceDescription “Hyper-V Virtual Ethernet Adapter»

Disable-NetAdapter - включить/отключить сетевой интерфейс

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

Get-NetAdapter | ft Name, Status, Linkspeed, VlanID

Получить информацию об драйвере сетевого адаптера:

Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName

Get-NetAdapter получить версию драйвера сетевого адаптера

Информация о физических параметров подключения сетевых адаптерах (PCI слот, шина и т.д.).

Вывести настройки IP сетевого подключения с PowerShell

Получить текущие настройки сетевого интерфейса (IP адрес, DNS, шлюз):

Get-NetIPConfiguration -InterfaceAlias Ethernet0

Get-NetIPConfiguration настройка сетевого интерфейса Ethernet0

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

Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed

В этом случае выводится назначенный профиль сети интерфейса (NetProfile.NetworkCategory), настройки MTU (NetIPv4Interface.NlMTU), включено ли получение адреса от DHCP (NetIPv4Interface.DHCP) и ряд другой полезной информации.

Get-NetIPConfiguration настройки сети

Вывести все IPv4 адреса интерфейсов Windows:

Get-NetIPAddress -AddressFamily ipv4|ft

Получить значение только IP адрес интерфейса:

(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address

Получить текущие настройки стека TCP на компьютере можно с помощью команды:

Многие администраторы замечают, в Windows Server 2019 с ролью Hyper-V скорость копирования файлов на ВМ очень низкая. В этом случае решить проблемы помогает возврат параметров стека TCP, к настройкам которые использовались в Windows Server 2016:

Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled

Вывести список сетевых протоколов, которые можно включить/отключить для сетевого адаптера:

Get-NetAdapterBinding -Name ethernet -IncludeHidden -AllBindings

Get-NetAdapterBinding сетевые протоколы, включенные для сетевого адаптера

Name DisplayName ComponentID Enabled ---- ----------- ----------- ------- Ethernet File and Printer Sharing for Microsoft Networks ms_server True Ethernet NetBIOS Interface ms_netbios True Ethernet Microsoft LLDP Protocol Driver ms_lldp True Ethernet Microsoft NDIS Capture ms_ndiscap True Ethernet Internet Protocol Version 4 (TCP/IPv4) ms_tcpip True Ethernet Microsoft RDMA - NDK ms_rdma_ndk True Ethernet Microsoft Network Adapter Multiplexor Protocol ms_implat False Ethernet Link-Layer Topology Discovery Mapper I/O Driver ms_lltdio True Ethernet NDIS Usermode I/O Protocol ms_ndisuio True Ethernet Point to Point Protocol Over Ethernet ms_pppoe True Ethernet Link-Layer Topology Discovery Responder ms_rspndr True Ethernet Internet Protocol Version 6 (TCP/IPv6) ms_tcpip6 True Ethernet Hyper-V Extensible Virtual Switch vms_pp False Ethernet WFP Native MAC Layer LightWeight Filter ms_wfplwf_lower True Ethernet Client for Microsoft Networks ms_msclient True Ethernet Npcap Packet Driver (NPCAP) INSECURE_NPCAP True Ethernet WINS Client(TCP/IP) Protocol ms_netbt True Ethernet Bridge Driver ms_l2bridge True Ethernet WFP 802.3 MAC Layer LightWeight Filter ms_wfplwf_upper True Ethernet QoS Packet Scheduler ms_pacer True

Для просмотра активных TCP IP сессий на компьютере используется командлет Get-NetTCPConnection.

PowerShell: задать статический IP адрес в Windows

С помощью PowerShell вы можете задать статический IP адрес для сетевого интерфейса. Чтобы изменить IP адрес, маску подсети и шлюз для сетевого интерфейса, выполните:

Get-NetAdapter -Name Ethernet0| New-NetIPAddress –IPAddress 192.168.1.80 -DefaultGateway 192.168.1.1 -PrefixLength 24

Можно задать IP адрес, представив его в виде массива (более наглядно):

$ipParams = @InterfaceIndex = 8
IPAddress = «192.168.1.22»
PrefixLength = 24
AddressFamily = «IPv4»
>
New-NetIPAddress @ipParams

Командлет New-NetIPAddress можно использовать для добавления второго IP адреса на сетевой интерфейс.

Если статический IP адрес уже настроен и нужно изменить его, используется командлет Set-NetIPAddress:

Set-NetIPAddress -InterfaceIndex 8 -IPAddress 192.168.1.90

Чтобы отключить получение IP адреса от DHCP для сетевого интерфейса, выполните:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled

Удалить статический IP адрес:

Remove-NetIPAddress -IPAddress «xxx.xxx.xxx.xxx»

Отключить протокол IPv6 для сетевого интерфейса:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled $false -ComponentID ms_tcpip6

Set-NetAdapterBinding -Name Ethernet0 -ComponentID ms_netbios -AllBindings -Enabled $True

Set-DnsClientServerAddress: настроить адреса DNS серверов

Чтобы задать адреса первичного и вторичного DNS серверов в Windows, используется командлет Set-DNSClientServerAddress. Например:

Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.1.11,10.1.1.11

Первый IP адрес адрес выставляется в качестве Preffered DNS, а второй в Alternate DNS.

Можно также задать DNS сервера через массив:

$dnsParams = @InterfaceIndex = 8
ServerAddresses = («8.8.8.8″,»8.8.4.4»)
>
Set-DnsClientServerAddress @dnsParams

После изменения настроек DNS, можно очистить DNS кэш (эквивалент ipconfig /flushdns ):

Вывести содержимое DNS кэша в Windows:
Get-DnsClientCache

Управление таблицей маршрутизации с помощью PowerShell

Для просмотра таблицы маршрутизации используется командлет Get-NetRoute.
Вывести маршрут по умолчанию для физического сетевого интерфейса в Windows:

Get-NetAdapter -Physical | ? | Get-netroute| where DestinationPrefix -eq «0.0.0.0/0»

powershell вывести маршрут по умолчанию в Windows

Чтобы добавить новый маршрут, используется New-NetRoute:

New-NetRoute -DestinationPrefix «0.0.0.0/0» -NextHop «192.168.0.1» -InterfaceIndex 8

Эта команда добавит постоянный маршрут в таблицу маршрутизации (аналог route -p add). Если вы хотите добавить временный маршрут, добавьте опцию -PolicyStore «ActiveStore» . Такой маршрут будет удален после перезагрузки Windows.

Удалить маршрут из таблицы маршрутизации:

Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$False

PowerShell: получить IP адрес в Windows от DHCP сервера

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

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled

Очистите настройки DNS серверов:

Set-DnsClientServerAddress –InterfaceIndex 8 -ResetServerAddresses

И перезапустите интерфейс для получения IP адреса:

Restart-NetAdapter -InterfaceAlias Ethernet0

Если ранее у вас был настроен шлюз, удалите его:

Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false

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

$IPType = «IPv4»
$adapter = Get-NetAdapter | ?
$interface = $adapter | Get-NetIPInterface -AddressFamily $IPType
If ($interface.Dhcp -eq «Disabled») If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) $interface | Remove-NetRoute -Confirm:$false
>
$interface | Set-NetIPInterface -DHCP Enabled
$interface | Set-DnsClientServerAddress -ResetServerAddresses
>

Изменить параметры IP и DNS на удаленном компьютере Windows

Вы можете использовать PowerShell чтобы удаленно изменить настройки IP адреса или DNS серверов на нескольких удаленных компьютерах. Допустим, ваша задача – изменить настройки DNS для всех серверов в указанном Organization Unit (OU) в Active Directory. Для получения списка компьютеров в скрипте ниже примере используется командлет Get-ADComputer, а удаленное подключение к компьютерам выполняется через WinRM (командлет Invoke-Command):

$Servers = Get-ADComputer -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -Filter ‘(OperatingSystem -like «Windows Server*»)’ | Sort-Object Name
ForEach ($Server in $Servers) Write-Host «Server $($Server.Name)»
Invoke-Command -ComputerName $Server.Name -ScriptBlock $NewDnsServerSearchOrder = «192.168.1.11»,»8.8.4.4″
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object
Write-Host «Old DNS settings: «
$Adapters | ForEach-Object
$Adapters | ForEach-Object | Out-Null
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object
Write-Host «New DNS settings: «
$Adapters | ForEach-Object
>
>

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

kubernetes — «kubectl» installation fails on Windows from PowerShell [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.

This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.

Closed 3 years ago .

Installation on windows should be very simple from the docs https://kubernetes.io/docs/tasks/tools/install-kubectl but mine fails at second step

Install-Script -Name 'install-kubectl' -Scope CurrentUser -Force install-kubectl.ps1 [-DownloadLocation ] install-kubectl.ps1 c:\kubectl ==>Getting download link from https://kubernetes.io/docs/tasks/tools/install-kubectl/ Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send. At C:\Program Files\PowerShell\Scripts\install-kubectl.ps1:31 char:8 + $req = Invoke-WebRequest -UseBasicParsing -Uri $uri + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand 

It seems like it is trying to download something from https://kubernetes.io/docs/tasks/tools/install-kubectl/ but it can not. I succeeded to check that connection, I do have access to internet from that Windows Server:

PS C:\Users\e561> Test-NetConnection -ComputerName "kubernetes.io" -Port 443 ComputerName : kubernetes.io RemoteAddress : 147.75.40.148 RemotePort : 443 InterfaceAlias : Ethernet 2 SourceAddress : 10.7.147.211 TcpTestSucceeded : True 

Основы Windows PowerShell

Рассказали, о технологии Windows PowerShell и как начать с ней работать.

Изображение записи

Рассказываем про Windows PowerShell — технологию для автоматизации рутинных задач, пришедшую на смену bat-файлам.

Работа с консолью Microsoft Windows

Ранее мы рассматривали командные интерпретаторы COMMAND.CMD и CMD.EXE, обеспечивающие автоматизацию задач в семействе операционных систем Microsoft Windows. Фактически данные интерпретаторы не получали обновлений с начала 2000-х годов и существуют в современных операционных системах для обеспечения совместимости.

Хотя современные операционные системы предлагают богатый на функции графический интерфейс, ряд однотипных задач быстрее решается через консоль. Более того, серверные редакции ОС не предоставляют графический интерфейс по умолчанию, поэтому интерпретатор командной строки является неотъемлемой частью практически любой операционной системы.

Помимо отсутствия обновлений, CMD.EXE имеет ограниченный функционал. Он не позволяет писать сложную логику и полностью отказаться от использования графического интерфейса. Корпорация Microsoft пыталась решить эти проблемы с помощью инструмента под названием Microsoft Script Host, который имел интеграцию со скриптовыми языками JScript и VBScript.

Однако Microsoft Script Host имел ряд собственных проблем:

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

Все это побуждало Microsoft сделать командный интерпретатор с нуля.

Новый командный интерпретатор Windows PowerShell

В 2003 году корпорация Microsoft начала разработку нового инструмента — Microsoft Shell (MSH), или Monad. Спустя три года и три бета-версии Monad была официально выпущена под новым названием Windows PowerShell 1.0 на Windows XP и Windows Vista. По ходу развития командная оболочка меняла свои названия на PowerShell Core и PowerShell.

При создании PowerShell разработчики задались целью создать инструмент, который позволил бы с легкостью использовать множество разнородных интерфейсов, предоставляемых операционной системой. Новый инструмент должен быть консистентным и легким для администратора, несмотря на количество технологий «под капотом». Например, PowerShell предоставляет доступ к API .NET-фреймворка, но не требует от администратора знания .NET.

Как и любой командный интерпретатор, PowerShell умеет запускать исполняемые файлы и имеет встроенные команды. Однако у PowerShell встроенные команды имеют название «командлет», появившееся от английского cmdlet.

Что такое командлет?

В основе взаимодействия с PowerShell лежат объекты, а не текст, как у CMD.EXE и командных интерпретаторов в *nix-системах. Такой подход меняет взгляд на организацию встроенных команд.

Командлет — это встроенная команда в PowerShell, выполняющая одну задачу и реализованная на .NET. Имя командлета соответствует правилу Глагол-Существительное, которое можно читать как Действие-Объект.

Самый важный командлет, о котором необходимо узнать в первую очередь, — Get-Help. Он отображает справочную информацию о PowerShell и командлетах.

# Получить общую справку по PowerShell Get-Help # Получить справку по командлету Get-Content Get-Help Get-Content # Получить справку по командлету Get-Help Get-Help Get-Help 

Если вам кажется, что использовать большие буквы в названии командлетов — это перебор, для вас есть хорошие новости. Все команды в PowerShell являются регистронезависимыми. Иными словами, перечисленные ниже написания эквивалентны:

Get-Help Get-Help get-help get-help GET-HELP GET-HELP GeT-hElP gEt-HeLp 

Хотя Windows PowerShell нечувствительна к регистру в именах и параметрах, внешние программы, которые вызываются через оболочку, могут не обладать такими возможностями.

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

Основы программы PowerShell

Перейдем к практике. PowerShell является кроссплатформенным инструментом и может быть запущена на Linux и macOS, но в данной статье будет рассматриваться только «родное» окружение — Windows.

Как запустить?

Программа в меню

Запуск PowerShell можно произвести из меню поиска около кнопки Пуск, набрав powershell.

PowerShell в меню

Аналогично можно запустить PowerShell через диалоговое окно Выполнить…, которое открывается через сочетание клавиш Windows + R.

Если по каким-то причинам у вас не установлен PowerShell, то необходимо сделать это, следуя инструкции в базе знаний Microsoft.

Установка PowerShell

В случае успеха откроется синее окно. Windows PowerShell готов к вашим командам.

Синтаксис

Синтаксис PowerShell похож на синтаксис других командных интерпретаторов. Сначала команда, а затем аргументы команды. Несколько команд в одной строке разделяются точкой с запятой. Рассмотрим на примере.

Get-Help Get-Command -Online

Данная команда откроет в браузере вкладку с описанием командлета Get-Command в базе знаний Microsoft. Разберем подробнее:

  • Get-Help – команда, в данном случае командлет,
  • Get-Command – первый позиционный аргумент, который передается командлету,
  • -Online – ключ, то есть именованный аргумент.

Обратите внимание, что в CMD.EXE именованные аргументы, то есть ключи, для встроенных команд начинались с символа слэш (/). У командлетов аргументы начинаются со знака минус. Использование знака / в PowerShell недопустимо и будет интерпретировано как ошибка.

Хотя PowerShell во многом похож на CMD.EXE, он имеет несколько существенных отличий. Во-первых, обращение к переменным производится через символ доллар, а не через знак процента. Во-вторых, PowerShell позволяет определять функции. Например:

function Get-Version

Данный код объявит функцию Get-Version, которая обращается к системной переменной (объекту) PSVersionTable и возвращает значение поля PSVersion. Проще говоря, выводит версию PowerShell.

Именование командлетов может быть неочевидным для администраторов с опытом работы с другими командными интерпретаторами. Поэтому рассмотрим основные команды Windows PowerShell.

Основные команды языка Windows PowerShell

В следующей таблице перечислены основные команды PowerShell и их аналоги в *nix-подобных системах и CMD.EXE. В версии PowerShell 7 количество командлетов превышает полторы тысячи!

Командлет (псевдоним) Команда в *nix Команда в CMD.exe Описание
Get-Location (pwd) pwd Выводит путь до текущего каталога
Set-Location (cd) cd cd Меняет текущий каталог
Get-ChildItem (ls) ls dir Выводит содержимое текущего каталога
Get-ChildItem find find Производит поиск файлов по заданным критериям
Copy-Item (cp) cp cp Копирует файл
Remove-Item (rm) rm rm Удаляет файл
New-Item (mkdir) mkdir mkdir Создает каталог
New-Item touch Создает пустой файл
Get-Content (cat) cat Выводит файлы
Get-Content tail Выводит последние 10 строк
Where-Object grep Производит фильтрацию
Create-Volume
Format-Volume
mkfs Форматирует раздел
Test-Connection ping ping.exe Отправляет ICMP-запросы, «пингует»
Get-Help (man) man help Показывает справку

После работы в консоли *nix командлет для популярного действия, смены каталога, выглядит громоздко и непривычно. К счастью, командлеты имеют псевдонимы (алиасы), которые могут не следовать правилу именования командлетов. Список известных псевдонимов можно получить с помощью командлета Get-Alias.

Хотя таблица, представленная выше, значительно облегчит назначение командлетов, не стоит ожидать от командлетов поведения как в *nix-системах. Так, например, в PowerShell командлет Get-Content создан для вывода содержимого одного файла на экран, в то время как на *nix-системах утилита cat изначально использовалась для конкатенации (процесса соединения) нескольких файлов с последующим выводом на экран.

Очевидно, что возможности PowerShell значительно больше, чем CMD.exe. Опытный администратор знает, что некоторые задачи из таблицы можно решить в CMD.exe, несмотря на отсутствие специальных команд. Однако эти команды требуют опыта или смекалки.

Утилита ping

Отдельно хочется отметить командлет Test-Connection, который делает то же самое, что утилита ping, но не имеет такого алиса. Разница между утилитой и командлетом в формате вывода: утилита выводит текст, а командлет возвращает объект, который можно использовать в конвейерах.

Конвейер PowerShell: особенности и параметры

По своей задумке конвейеры в PowerShell не отличаются от конвейеров в *nix-системах: они перенаправляют вывод одной команды на ввод другой. Как отмечалось ранее, в PowerShell происходит взаимодействие не с текстом, а с объектами. При выводе на экран объект трансформируется в таблицу, чтобы человеку было удобнее читать, но не всегда таблица выводит все поля объекта.

Особенность конвейеров PowerShell заключается в том, что конвейер передает результат не целиком, а по одному объекту. Командлет Test-Connection выводит четыре объекта: по одному на каждый ICMP-запрос. Если подключить командлет к конвейеру, то можно увидеть подтверждение этому тезису. Воспользуемся командлетом Select-Object, чтобы выбрать колонку со временем запроса.

Test-Connection selectel.ru | Select-Object ‘Time(ms)’

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

Test-connection

Но как же так? Дело в том, что отображение объекта при выводе на экран не всегда соответствует имени поля в объекте. Чтобы получить полный список полей в объекте, необходимо вызвать командлет Get-Member.

PS C:\Users\sun> Test-connection selectel.ru | Get-Member TypeName: System.Management.ManagementObject#root\cimv2\Win32_PingStatus Name MemberType Definition ---- ---------- ---------- PSComputerName AliasProperty PSComputerName = __SERVER Address Property string Address BufferSize Property uint32 BufferSize NoFragmentation Property bool NoFragmentation PrimaryAddressResolutionStatus Property uint32 PrimaryAddressResolutionStatus ProtocolAddress Property string ProtocolAddress ProtocolAddressResolved Property string ProtocolAddressResolved RecordRoute Property uint32 RecordRoute ReplyInconsistency Property bool ReplyInconsistency ReplySize Property uint32 ReplySize ResolveAddressNames Property bool ResolveAddressNames ResponseTime Property uint32 ResponseTime ResponseTimeToLive Property uint32 ResponseTimeToLive RouteRecord Property string[] RouteRecord RouteRecordResolved Property string[] RouteRecordResolved SourceRoute Property string SourceRoute SourceRouteType Property uint32 SourceRouteType StatusCode Property uint32 StatusCode Timeout Property uint32 Timeout TimeStampRecord Property uint32[] TimeStampRecord TimeStampRecordAddress Property string[] TimeStampRecordAddress TimeStampRecordAddressResolved Property string[] TimeStampRecordAddressResolved TimestampRoute Property uint32 TimestampRoute TimeToLive Property uint32 TimeToLive TypeofService Property uint32 TypeofService __CLASS Property string __CLASS __DERIVATION Property string[] __DERIVATION __DYNASTY Property string __DYNASTY __GENUS Property int __GENUS __NAMESPACE Property string __NAMESPACE __PATH Property string __PATH __PROPERTY_COUNT Property int __PROPERTY_COUNT __RELPATH Property string __RELPATH __SERVER Property string __SERVER __SUPERCLASS Property string __SUPERCLASS ConvertFromDateTime ScriptMethod System.Object ConvertFromDateTime(); ConvertToDateTime ScriptMethod System.Object ConvertToDateTime(); IPV4Address ScriptProperty System.Object IPV4Address  

Можно визуально оценить список и найти поле ResponseTime. Также в начале указан тип данного объекта, Win32_PingStatus, информацию о котором можно поискать в базе знаний Microsoft. В документации не только перечислены поля, но и их назначение. Таким образом, конечный вид конвейера будет таким:

Test-connection selectel.ru | Select-Object ResponseTime

Хотя PowerShell побуждает к интерактивной работе, его основное предназначение — автоматизировать рутинные задачи. Значит, необходимо писать скрипты.

Используйте PowerShell в работе с выделенным сервером

Соберите сервер в конфигураторе под свои задачи. Или выберите из более 100 готовых.

Интегрированная среда разработки

Среда разработки

Если вы запускали PowerShell через поиск, вероятно, вы могли заметить приложение Windows PowerShell ISE.

PowerShell-скрипты — это текстовые файлы с расширением .ps1.

Windows PowerShell ISE — это интегрированная среда сценариев PowerShell, включающая в себя:

  • редактор PowerShell-скриптов с автодополнением,
  • окно для интерактивного выполнения командлетов в скрипте,
  • список доступных командлетов с поиском.

Перечень команд

Справка Test-Connection

Обратите внимание, что модуль ISE предоставляет графический интерфейс для генерации аргументов командлета. Помимо генерации команд, в функции модуля также входит вызов «справочника» по командлетам, аналогичного Get-Help, только в графическом интерфейсе.

После написания своего первого PowerShell-скрипта вы столкнетесь с некоторыми ограничениями. Во-первых, файл с расширением ps1 нельзя запустить «двойным кликом» по файлу. Необходимо открыть контекстное меню с помощью правой клавиши мыши и выбрать Запустить с помощью PowerShell.

Во-вторых, скрипт не запустится со следующей ошибкой:

Невозможно загрузить файл C:\Users\sun\Documents\HelloWorld.ps1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft.com/fwlink/ ?LinkID=135170. + CategoryInfo : Ошибка безопасности: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : UnauthorizedAccess 

По умолчанию запуск PowerShell-скриптов ограничен соответствующей политикой безопасности. Посмотреть текущее значение политики безопасности можно с помощью командлет Get-ExecutionPolicy:

PS C:\Users\sun> Get-ExecutionPolicy Restricted 

Список возможных значений:

  • Restricted — запуск запрещен,
  • AllSigned — разрешен только запуск подписанных доверенным разработчиком скриптов,
  • RemoteSigned — разрешен запуск подписанных и собственных скриптов,
  • Unrestricted — разрешен запуск любых скриптов.

По умолчанию стоит значение Restricted. В идеале необходимо подписывать скрипты, но для собственных нужд можно ограничиться значением RemoteSigned:

Set-ExecutionPolicy RemoteSigned

Для выполнения данной команды необходимо запустить PowerShell от имени администратора.

Выполнение задач в фоне

Консоль PowerShell

PowerShell позволяет выполнять задачи в фоновом режиме, эту функциональность обеспечивают командлеты с существительным Job:

  • Start-Job — запустить команду или командлет в фоновом режиме,
  • Get-Job — показать состояние фоновых команд,
  • Wait-Job — дождаться завершения выполнения фоновой команды,
  • Receive-Job — получить результат выполнения команды.

Командлет Start-Job возвращает информацию о запущенном фоновом задании. Идентификатор, обозначенный в поле Id, является уникальным для сессии PowerShell.

Настройка удаленного выполнения

PowerShell позволяет реализовать удаленное выполнение командлетов, скриптов, но только на платформе Windows. Для включения возможности удаленного управления необходимо выполнить командлет Enable-PSRemoting с правами администратора.

Командлет Enter-PSSession запустит удаленную интерактивную сессию, а Invoke-Command выполнит команду на одном или нескольких удаленных компьютерах.

PowerShell – актуальные версии программы

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

На момент написания статьи актуальная версия PowerShell — 7.2. Используйте этот текст в качестве краткого справочника по Windows PowerShell, администрирование систем со скриптами в этой программе будет довольно простым.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *