powershell ip адрес компьютера

Powershell настраиваем IP адрес

Если вы впервые настраиваете IP в Powershell и делаете это самостоятельно, то наверняка столкнетесь с какой-то проблемой. Связано это, на мой взгляд, с немного не очевидными командами.

В первую очередь что мне бы пришло в голову это использовать глагол Set для установки IP адреса, но это привело бы ошибке типа:

Set-NetIPAddress : No matching MSFT_NetIPAddress objects found by CIM query for instances of the ROOT/StandardCimv2/MSF
T_NetIPAddress

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

Можно сделать так, что бы вернулись сразу все физические адаптеры и мы бы смогли индефицировать их по IP адресам (т.к. в Get-NetAdapter ip не выводится).

В моем случае интерфейс такой. Выделены те данные, которые нам понадобятся:

Далее установим новые статические настройки интерфейса:

Далее нужно настроить DNS адрес в powershell. Тут впринципе тоже можно перепутать команды с Set-DNSClient, но верно так:

Теперь статический адрес настроент.

Что делает команда Set-NetIPAddress? Она меняет настройки существующего IP адреса, но не сам IP адрес клиента. Мы могли забыть установить маску, она бы установилась по умолчанию, тогда можно дописать так:

Или так, заменив индефикатор адаптера на IP:

С помощью Set-DNSClient мы можем добавить DNS суффикс к адаптеру или отключить динамическое обновление DNS с этого компьютера:

Источник

Настройка параметров сетевого адаптера с помощью PowerShell: IP-адрес, DNS, шлюз по умолчанию, статические маршруты

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

Ранее для настройки сетевых параметров Windows из интерфейса командной строки использовалась команда netsh interface ipv4. В PowerShell 3.0 и новее вы можете использовать встроенный модуль PowerShell NetTCPIP для управления настройками сети Windows.

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

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

Управление сетевыми адаптерами с помощью PowerShell

Отобразить список доступных сетевых интерфейсов на компьютере:

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

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

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

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

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

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

Если для адаптера указана VLAN, вы можете отобразить её следующим образом:

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

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

Как просмотреть настройки сетевого адаптера TCP/IP с помощью PowerShell?

Чтобы получить текущие настройки сетевого адаптера (IP-адрес, DNS, шлюз по умолчанию):

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

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

Чтобы получить только IPv4-адрес интерфейса:

Использование PowerShell для установки статического IP-адреса

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

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

Вы можете использовать New-NetIPAddress, чтобы добавить второй IP-адрес (псевдоним) к сетевому адаптеру.

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

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

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

Чтобы отключить протокол IPv6 для сетевого адаптера:

Set-DnsClientServerAddress: установка адресов первичного и вторичного DNS-серверов

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

Вы также можете установить серверы имён, используя массив:

После изменения настроек DNS вы можете очистить кеш резолвера:

Как изменить статический IP-адрес на DHCP с помощью PowerShell?

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

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

И перезапустите адаптер, чтобы автоматически получить IP-адрес от DHCP-сервера:

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

Как удалённо изменить IP-адрес и настройки DNS с помощью PowerShell?

Вы можете использовать PowerShell для удалённого изменения IP-адреса или настроек DNS-сервера на нескольких удалённых компьютерах. Предположим, ваша задача — изменить настройки DNS для всех серверов в конкретном контейнере AD (Organizational Unit). Чтобы получить список компьютеров в приведённом ниже скрипте, используется командлет Get-ADComputer, а для удалённого подключения к компьютерам используется WinRM (командлет Invoke-Command):

Источник

Adam the Automator

How to Use PowerShell to Get an IP Address

Adam Bertram

Read more posts by this author.

Читайте также:  пола ракса фото сейчас

IT admins can do a lot with PowerShell and the command line; working with Windows networking is one of those ways. In this tutorial, you’re going to learn how to use PowerShell to get IP addresses from network adapters on a Windows computer with the Get-NetIPAddress cmdlet and WMI.

Prerequisites

Using Get-NetIPAddress

Keep it simple. If PowerShell offers a simpler way to do something, do it!

For example, to find the IPv4 address on all network adapters on a local computer, run a single line.

The output above references a specific network adapter such as the Ethernet adapter and returns only the IP address.

You’re done! Simply using PowerShell to get an IP address is a straightforward process, at least much more so than using other means.

If you’re not a fan of PowerShell, you can also use the ipconfig command to get an IP address. Look more on ipconfig at The Ipconfig Commands You Need to Know.

Why Use CIM/WMI?

When you run the Get-NetIPAddress cmdlet, PowerShell is actually querying WMI to retrieve that information. Why is it important to know this? Because you can query WMI directly yourself. But why use WMI when you can use a single command?

One of the most common reasons to use WMI over a single command like Get-NetIPAddress is when you’re already querying WMI. WMI contains lots of system information that comes in handy when building scripts for inventory purposes.

When communicating with WMI with PowerShell, you can create a CIM session much like a PSRemoting session. Using a session is an efficient way to authenticate to a computer once and reuse that connection repeatedly.

Use CIM to get an IP address when you’re building this task as part of a larger script.

Querying CIM Without a Session

When you’re building a PowerShell script using CIM to query various pieces of information, you should use a reusable CIM session. Reusing a single session not only speeds up your script but also reduces code duplication.

For example, perhaps you’d like to find what operating system a remote Windows computer is running. CIM holds the OS name in a property called Caption inside of the Win32_OperatingSystem class. To get this information, you’d use the Get-CimInstance cmdlet below, specifying the computer name ( REMOTECOMPUTER ), the CIM class ( Win32_OperatingSystem ), and referencing only the Caption property on the object.

What if you’re building a server inventory script and also want to find information about storage, memory, networking, and so on? In that case, you’d have a lot of Get-CimInstance commands like below.

Your script will connect to REMOTECOMPUTER four times in the above code snippet, and what if the computer name changes? You’re going to have to find/replace that computer name, which is never a good sign while coding.

Creating a CIM Session

Instead of using Get-CimInstance with a session, you should create a single CIM session with the New-CimSession cmdlet and reuse that session repeatedly.

Instead of authenticating to a remote computer over and over, create a single CIM session with New-CimSession and pass that session to Get-CimInstance like below.

Once you’re done with the session, disconnect and remove it from memory.

Using CIM sessions like above is a great way to work with CIM/WMI.

Finding the Right Network Adapter

Since a Windows computer can have different network adapters, you must first narrow down which network adapter you’d like to get the IP address from. When using WMI, use the Win32_NetworkAdapterConfiguration class. This class provides much of the information that the Get-NetIPAddress returns.

First, create a PowerShell script with the remote computer’s name, create a new CIM session, and then add your CIM session removal line below it.

Once you’ve built out the CIM session code, insert the WMI query.

You can see that the default output above doesn’t show the IP address. You’ll have to dig in a bit deeper. It also doesn’t return a single instance. How do you narrow down the one that has the IP address you’re looking for?

Scroll through the output, and you’ll notice some network adapters without an IP address, some with one, and some with multiple IPs! You must limit that down. You must find some standard criterion to filter on so that it can apply to all servers.

On each adapter, you should see the IPEnabled property. When this property is set to True, the TCP/IP protocol is bound to this NIC, which is a prerequisite to having an IP address. You must narrow down the NICs that have the IPEnabled property set to True, and you’ll have the adapter you’re looking for.

Don’t use Where-Object unless you have to. The performance will be much faster instead due to the lack of overhead of processing unnecessary objects across the pipeline.

The Filter parameter on Get-CimInstance uses Windows Query Language (WQL). WQL is a small subset of SQL. The Filter parameter expects the same constraint WHERE clause syntax as SQL would.

To find all of the CIM instances of the Win32_NetworkAdapterConfiguration class with the IPEnabled property set to True, use the SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = ‘True’ WQL query.

Читайте также:  контрольная сумма каталога linux

When you run the above code snippet, you should see that Get-CimInstance returns only a single (or limited set) of instances.

Now that you have a single CIM instance and know the property you’re looking for ( IPAddress ), let’s see what it looks like. You’ll see below that, in this instance, it returns a single CIM instance but with three strings for the IPAddress property, including IPV6 addresses.

You’re going to have to filter some more elements out. Because WQL can’t filter deeper than the IPAddress property value, you must now parse out the IPv4 address.

The IPV4 address is typically the first one defined in the array. Pick out that one using by referencing the 0 index as shown below. When you do, you’ll see that it returns only a single IPV4 IP address string.

The IPV4 address may not always be the first array element. In fact, the IPAddress property may not even be an array. IP configurations vary drastically over adapters and various configurations. You may have to get creative in filtering them.

Conclusion

If you need to use PowerShell to get an IP address from a computer, look at the Get-NetIPAddress cmdlet first. If you’re building a larger script or cannot run this command for some reason, look into using Get-CimInstance and CIM session to do the dirty work.

More from Adam The Automator & Friends

Scan your Active Directory for 750M+ known leaked passwords with a free read-only Specops Password Audit.

Check out these ATA Recommended Resources!

Why not write on a platform with an existing audience and share your knowledge with the world?

Источник

Выполнение задач по работе с сетями

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

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

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

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

Чтобы понять причину появления скобок, используйте командлет Get-Member для изучения свойства IPAddress :

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

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

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

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

Удобнее отображать сводные данные, содержащие свойства 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 используется в качестве широковещательного адреса подсети).

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

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

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

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

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

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

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

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

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

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

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

Вы можете воспользоваться оператором Filter IPEnabled=$true and DHCPEnabled=$false во избежание включения поддержки DHCP для адаптеров, у которых она уже включена, но пропуск этого шага не приведет к появлению ошибок.

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

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

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

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

Ссылку на класс WMI вместо ссылки на экземпляры класса можно получить путем перечисления всех классов WMI и выбора нужного класса по имени. Например, следующая команда возвращает класс Win32_NetworkAdapterConfiguration :

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

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

Создать сетевую папку можно с помощью метода Create класса Win32_Share :

Для этой же цели в Windows PowerShell можно использовать команду net share :

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

Для Windows в этом случае подойдет и net share :

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

В Windows также работает и команда net use :

Источник

Настройка сети с помощью PowerShell (IP адрес, DNS, шлюз, маршруты)

В этой статье мы рассмотрим особенности настройки параметров сетевых адаптеров в Windows из PowerShell. Посмотрим, как узнать и назначить статический IP адрес, DNS сервера, или настроить сетевой интерфейс на получение конфигурации IP от DHCP сервера. Вы можете использовать эти командлеты для настройки сети в Сore/Nano версиях Windows Server, в Hyper-V Server, изменения настроек IP на удаленных компьютерах или по сети серверах или в PS скриптах.

Читайте также:  сережино поле белоглинский район

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

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

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

Выведем список доступных сетевых интерфейсов компьютера:

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

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

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

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

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

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

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

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

Информация об используемом драйвере сетевого адаптера:

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

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

Просмотр настроек TCP/IP сетевого интерфейса из PowerShell

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

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

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

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

Настроить статический IP адрес из PowerShell

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

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

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

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

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

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

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

Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.1.11,10.1.1.11

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

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

После изменения настроек DNS, можно очистить DNS кэш:

PowerShell: Настройка получения IP адреса от DHCP сервера

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

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

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

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

Удаленное изменение IP/DNS настроек в Windows

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

А нет ли способа сделать с помощью PowerShell следующее:

Есть Win2003 server в рабочей группе. PowerShell не стоит, но можно поставить 2.0.

Нужно: с Win2k3 srv экспортировать учетки пользователей и импортировать их на новый Win2012srv.

Можно набить всех пользователей руками, их там 2-3 десятка. Можно написать батник (пароли юзеров известны). Но, может быть, есть способ экспорта-импорта?

Оффтоп.
Отвечу парой предложений.
Получаете список пользователей на w2k3: net user>>c:\log\exp_usr.bat
Потом руками преобразовать файл в формат:
net user user1 p»ssword /ADD
net user user2 p@ssword /ADD
….
Полученный bat файл запустить на ws2012r2

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

Можно использовать такой скрипт PowerShell скрипт для переключения клиента на DHCP и запускать его через GPO для десктопных версий Windows:

Использую скрипт включение DHCP через GPO на запуск ПК. По логам скрипт отрабатывает, но настройка сетевого адаптера не меняются. Как быть?

Вы запускаете его через логон скрипт? Скрипт не отрабатывает только через GPO, при ручном запуске работает?

Добрый день!
Как можно в «свойствах адаптера» на вкладке «Доступ» убрать, а потом поставить крыжик «Разрешить другим пользователям сети использовать подключение к Интернету»?
Надо чтоб это можно было запускать в командном файле.
RNDIS отваливается постоянно и лечится только такой процедурой.

Вот как раз ваш случая — когда пропадает общий доступ к подключению через ICS. Помогает ключ реестра, или powershell скрипт
https://winitpro.ru/index.php/2021/04/13/propadaet-obshhij-dostup-k-internetu-posle-perezagruzki-windows-10/


ComputerName : COMP
InterfaceAlias : Ethernet
InterfaceIndex : 3
InterfaceDescription : Realtek PCIe GbE Family Controller
NetCompartment.CompartmentId : 1
NetCompartment.CompartmentDescription : Default Compartment
NetAdapter.LinkLayerAddress : 04-D9-F5-AC-F1-C5
NetAdapter.Status : Up
NetProfile.Name : Сеть
NetProfile.NetworkCategory : Private
NetProfile.IPv6Connectivity : NoTraffic
NetProfile.IPv4Connectivity : Internet
IPv6LinkLocalAddress : fe80::dc6:53d3:bd78:dc52%3
IPv4Address : 192.168.88.2
IPv6DefaultGateway :
IPv4DefaultGateway : 192.168.88.1
NetIPv6Interface.NlMTU : 1500
NetIPv4Interface.NlMTU : 1500
NetIPv6Interface.DHCP : Enabled
NetIPv4Interface.DHCP : Enabled
DNSServer : 192.168.88.1


InterfaceAlias : Ethernet
NetAdapter.LinkLayerAddress :
NetAdapter.Status :
NetProfile.NetworkCategory :
IPv4Address : <192.168.88.2>
IPv4DefaultGateway :
NetIPv4Interface.DHCP :
DNSServer : = «», SystemName = «23»), MSFT_DNSClientServerAddress (Name = «3», CreationClassName = »
«, SystemCreationClassName = «», SystemName = «2»)>

Как это можно исправить?
Также, есть ли возможность добавить в вывод информацию о маске подсети?

Источник

Образовательный портал