Powershell управление сетью: Выполнение задач по работе с сетями — PowerShell
Выполнение задач по работе с сетями — PowerShell
-
- Чтение занимает 6 мин
В этой статье
Большая часть задач администрирования низкоуровневых сетевых протоколов связана с протоколом TCP/IP, так как это наиболее распространенный сетевой протокол.Because TCP/IP is the most commonly used network protocol, most low-level network protocol administration tasks involve TCP/IP. В этом разделе описано использование инструментария WMI и PowerShell для выполнения этих задач.In this section, we use PowerShell and WMI to do these tasks.
Получение списка IP-адресов компьютераListing IP Addresses for a Computer
Список всех IP-адресов, используемых локальным компьютером, возвращает следующая команда:To get all IP addresses in use on the local computer, use the following command:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExpandProperty IPAddress
Выходные данные этой команды отличаются от большинства списков свойств заключением значений в фигурные скобки:The output of this command differs from most property lists, because values are enclosed in braces:
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 :To understand why the braces appear, use the Get-Member
cmdlet to examine the IPAddress property:
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 каждого сетевого адаптера в действительности представляет собой массив. The IPAddress property for each network adapter is actually an array. Фигурные скобки в определении указывают на то, что свойство IPAddress содержит не значение типа System.String , а массив значений типа System.String .The braces in the definition indicate that IPAddress is not a System.String value, but an array of System.String values.
Вывод данных IP-конфигурацииListing IP Configuration Data
Для отображения подробных данных IP-конфигурации каждого сетевого адаптера воспользуйтесь следующей командой:To display detailed IP configuration data for each network adapter, use the following command:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true
По умолчанию отображается очень небольшая часть доступных сведений об объекте конфигурации сетевого адаптера.The default display for the network adapter configuration object is a very reduced set of the available information. Для более глубокого изучения и устранения неполадок воспользуйтесь командлетом Select-Object
или командлетом форматирования, например Format-List
, чтобы задать отображаемые свойства.For in-depth inspection and troubleshooting, use Select-Object
or a formatting cmdlet, such as Format-List
, to specify the properties to be displayed.
В современных сетях TCP/IP вам, скорее всего, больше не понадобятся свойства IPX или WINS.In modern TCP/IP networks you are probably not interested in IPX or WINS properties. Вы можете использовать параметр ExcludeProperty командлета Select-Object
, чтобы скрыть свойства, имена которых начинаются на WINS или IPX.You can use the ExcludeProperty parameter of Select-Object
to hide properties with names that begin with «WINS» or «IPX».
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
Select-Object -ExcludeProperty IPX*,WINS*
Эта команда выводит подробные сведения о DHCP, DNS, маршрутизации и других менее значительных свойствах IP-конфигурации. This command returns detailed information about DHCP, DNS, routing, and other minor IP configuration properties.
Проверка связи с компьютерамиPinging Computers
Простую проверку связи с компьютером можно выполнить с помощью Win32_PingStatus .You can perform a simple ping against a computer using by Win32_PingStatus . Следующая команда производит проверку связи, но при этом выводит большой объем сведений:The following command performs the ping, but returns lengthy output:
Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"
Удобнее отображать сводные данные, содержащие свойства Address, ResponseTime и StatusCode, как это делает приведенная ниже команда.A more useful form for summary information a display of the Address, ResponseTime, and StatusCode properties, as generated by the following command. Параметр Autosize командлета Format-Table
изменяет размер столбцов таблицы для их правильного отображения в PowerShell. The Autosize parameter of Format-Table
resizes the table columns so that they display properly in 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 указывает на успешно выполненную проверку связи.A StatusCode of 0 indicates a successful ping.
Для проверки связи с несколькими компьютерами с помощью одной команды можно использовать массив.You can use an array to ping multiple computers with a single command. Так как адресов несколько, для проверки связи с каждым адресом по отдельности можно использовать ForEach-Object
:Because there is more than one address, use the ForEach-Object
to ping each address separately:
'127.0.0.1','localhost','research. microsoft.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 используется в качестве широковещательного адреса подсети).You can use the same command format to ping all of the computers on a subnet, such as a private network that uses network number 192.168.1.0 and a standard Class C subnet mask (255.255.255.0)., Only addresses in the range of 192.168.1.1 through 192.168.1.254 are legitimate local addresses (0 is always reserved for the network number and 255 is a subnet broadcast address).
Чтобы представить массив чисел от 1 до 254 в PowerShell, используйте оператор 1. .254 .To represent an array of the numbers from 1 through 254 in PowerShell, use the statement 1..254.
Таким образом, полную проверку связи с подсетью можно осуществить, сформировав этот массив и добавляя его элементы к частичному адресу в операторе проверки связи:A complete subnet ping can be performed by generating the array and then adding the values onto a partial address in the ping statement:
1..254| ForEach-Object -Process {
Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_ '") } |
Select-Object -Property Address,ResponseTime,StatusCode
Такой метод формирования диапазона адресов может быть использован в любых подобных случаях.Note that this technique for generating a range of addresses can be used elsewhere as well. Полный набор адресов можно сформировать следующим образом:You can generate a complete set of addresses in this way:
$ips = 1..254 | ForEach-Object -Process {'192.168.1. ' + $_}
Извлечение свойств сетевого адаптераRetrieving Network Adapter Properties
Ранее упоминалось о возможности извлечения общих свойств конфигурации с помощью класса Win32_NetworkAdapterConfiguration .Earlier, we mentioned that you could retrieve general configuration properties using the Win32_NetworkAdapterConfiguration class. Такие сведения о сетевом адаптере, как MAC-адреса и типы адаптеров, не относятся, строго говоря, к протоколу TCP/IP, но могут оказаться полезными для понимания того, что происходит в компьютере.Although not strictly TCP/IP information, network adapter information such as MAC addresses and adapter types can be useful for understanding what is going on with a computer. Сводные данные можно получить с помощью следующей команды:To get a summary of this information, use the following command:
Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .
Назначение домена DNS сетевому адаптеруAssigning the DNS Domain for a Network Adapter
Чтобы назначить домен DNS для автоматического разрешения имен, нужно использовать метод SetDNSDomain класса Win32_NetworkAdapterConfiguration . To assign the DNS domain for automatic name resolution, use the SetDNSDomain method of the Win32_NetworkAdapterConfiguration . Так как назначение домена DNS для каждого сетевого адаптера производится независимо, необходимо воспользоваться оператором ForEach-Object
, чтобы назначить домен для каждого адаптера:Because you assign the DNS domain for each network adapter configuration independently, you need to use a ForEach-Object
statement to assign the domain to each adapter:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
ForEach-Object -Process { $_.SetDNSDomain('fabrikam.com') }
Здесь нужно использовать оператор фильтрации IPEnabled=$true
, так как даже в сети, использующей лишь протокол TCP/IP, некоторые сетевые адаптеры компьютера не являются настоящими адаптерами TCP/IP. Они представляют собой общие программные элементы, поддерживающие службы RAS, PPTP, QoS и т. п. для всех адаптеров, и не имеют собственного адреса.The filtering statement IPEnabled=$true
is necessary, because even on a network that uses only TCP/IP, several of the network adapter configurations on a computer are not true TCP/IP adapters; they are general software elements supporting RAS, PPTP, QoS, and other services for all adapters and thus do not have an address of their own.
Фильтрацию в команде можно осуществить с помощью командлета Where-Object
вместо фильтра Get-CimInstance
.You can filter the command by using the Where-Object
cmdlet, instead of using the Get-CimInstance
filter.
Get-CimInstance -Class Win32_NetworkAdapterConfiguration |
Where-Object {$_.IPEnabled} |
ForEach-Object -Process {$_.SetDNSDomain('fabrikam.com')}
Выполнение задач настройки DHCPPerforming DHCP Configuration Tasks
Изменение сведений DHCP, так же как и настройка DNS, включает работу с набором сетевых адаптеров. Modifying DHCP details involves working with a set of network adapters, just as the DNS configuration does. Существует несколько отдельных действий, выполняемых с помощью инструментария WMI. Мы рассмотрим несколько наиболее типичных.There are several distinct actions you can perform by using WMI, and we will step through a few of the common ones.
Определение адаптеров, поддерживающих DHCPDetermining DHCP-Enabled Adapters
Найти на компьютере адаптеры, поддерживающие DHCP, можно с помощью следующей команды:To find the DHCP-enabled adapters on a computer, use the following command:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"
Чтобы исключить из поиска адаптеры, имеющие проблемы в IP-конфигурации, можно добавить требование поддержки протокола IP:To exclude adapters with IP configuration problems, you can retrieve only IP-enabled adapters:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true"
Извлечение свойств DHCPRetrieving DHCP Properties
Свойства адаптера, относящиеся к протоколу DHCP, обычно начинаются с DHCP
, поэтому для отображения только этих свойств можно использовать параметр Property командлета Format-Table
:Because DHCP-related properties for an adapter generally begin with DHCP
, you can use the Property parameter of Format-Table
to display only those properties:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true" |
Format-Table -Property DHCP*
Включение поддержки DHCP на каждом адаптереEnabling DHCP on Each Adapter
Чтобы включить поддержку DHCP на всех адаптерах, используйте команду:To enable DHCP on all adapters, use the following command:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
ForEach-Object -Process {$_. EnableDHCP()}
Вы можете воспользоваться оператором FilterIPEnabled=$true and DHCPEnabled=$false
во избежание включения поддержки DHCP для адаптеров, у которых она уже включена, но пропуск этого шага не приведет к появлению ошибок.You can use the Filter statement IPEnabled=$true and DHCPEnabled=$false
to avoid enabling DHCP where it is already enabled, but omitting this step will not cause errors.
Отмена и обновление аренды адреса DHCP для отдельных адаптеровReleasing and Renewing DHCP Leases on Specific Adapters
Класс Win32_NetworkAdapterConfiguration использует методы ReleaseDHCPLease и RenewDHCPLease .The Win32_NetworkAdapterConfiguration class has ReleaseDHCPLease and RenewDHCPLease methods. Оба метода используются одинаково.Both are used in the same way. Обычно их применяют лишь при необходимости отмены или обновления аренды адресов для адаптера в отдельной подсети. In general, use these methods if you only need to release or renew addresses for an adapter on a specific subnet. Простейшим способом фильтрации адаптеров в подсети является выбор лишь тех адаптеров, которые используют шлюз для этой подсети.The easiest way to filter adapters on a subnet is to choose only the adapter configurations that use the gateway for that subnet. Например, следующая команда отменяет все аренды адресов DHCP для адаптеров на локальном компьютере, которые арендуют адреса DHCP с 192.168.1.254:For example, the following command releases all DHCP leases on adapters on the local computer that are obtaining DHCP leases from 192.168.1.254:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true" |
Where-Object {$_.DHCPServer -contains '192.168.1.254'} |
ForEach-Object -Process {$_.ReleaseDHCPLease()}
Единственное отличие при обновлении аренды адреса DHCP состоит в вызове метода RenewDHCPLease вместо метода ReleaseDHCPLease :The only change for renewing a DHCP lease is to use the RenewDHCPLease method instead of the ReleaseDHCPLease method:
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true" |
Where-Object {$_. DHCPServer -contains '192.168.1.254'} |
ForEach-Object -Process {$_.ReleaseDHCPLease()}
Примечание
Если эти методы применяются на удаленном компьютере, возможна потеря доступа к удаленной системе, которая подключена через адаптер с отмененной или обновленной арендой.When using these methods on a remote computer, be aware that you can lose access to the remote system if you are connected to it through the adapter with the released or renewed lease.
Отмена и обновление аренды адресов DHCP для всех адаптеровReleasing and Renewing DHCP Leases on All Adapters
Отменить или обновить аренду адресов DHCP сразу для всех адаптеров можно с помощью методов Win32_NetworkAdapterConfiguration — ReleaseDHCPLeaseAll и RenewDHCPLeaseAll .You can perform global DHCP address releases or renewals on all adapters by using the Win32_NetworkAdapterConfiguration methods, ReleaseDHCPLeaseAll and RenewDHCPLeaseAll .
Однако эту команду следует применять к классу WMI, а не к отдельному адаптеру, поскольку глобальная отмена и обновление аренды осуществляется на уровне класса, а не отдельного адаптера.However, the command must apply to the WMI class, rather than a particular adapter, because releasing and renewing leases globally is performed on the class, not on a specific adapter.
Ссылку на класс WMI вместо ссылки на экземпляры класса можно получить путем перечисления всех классов WMI и выбора нужного класса по имени.You can get a reference to a WMI class, instead of class instances, by listing all WMI classes and then selecting only the desired class by name. Например, следующая команда возвращает класс Win32_NetworkAdapterConfiguration :For example, the following command returns the Win32_NetworkAdapterConfiguration class:
Get-CimInstance -List | Where-Object {$_.Name -eq 'Win32_NetworkAdapterConfiguration'}
Эту команду можно рассматривать как класс и использовать ее при вызове метода ReleaseDHCPAdapterLease . You can treat the entire command as the class and then invoke the ReleaseDHCPAdapterLease method on it. В следующей команде элементы конвейера Get-CimInstance
и Where-Object
ограничены круглыми скобками, в результате чего PowerShell обрабатывает их первыми:In the following command, the parentheses surrounding the Get-CimInstance
and Where-Object
pipeline elements direct PowerShell to evaluate them first:
(Get-CimInstance -List |
Where-Object {$_.Name -eq 'Win32_NetworkAdapterConfiguration'}).ReleaseDHCPLeaseAll()
Такой же формат команды используется при вызове метода RenewDHCPLeaseAll :You can use the same command format to invoke the RenewDHCPLeaseAll method:
(Get-CimInstance -List |
Where-Object {$_.Name -eq 'Win32_NetworkAdapterConfiguration'}).RenewDHCPLeaseAll()
Создать сетевую папку можно с помощью метода Create класса Win32_Share :To create a network share, use the Create method of Win32_Share :
(Get-CimInstance -List |
Where-Object {$_. Name -eq 'Win32_Share'}).Create(
'C:\temp','TempShare',0,25,'test share of the temp folder'
)
Для этой же цели в Windows PowerShell можно использовать команду net share
:You can also create the share by using net share
in PowerShell on Windows:
net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"
Сетевую папку можно удалить с помощью Win32_Share , но этот процесс немного отличается от создания, так как требует получения именно удаляемой сетевой папки, а не класса Win32_Share .You can remove a network share with Win32_Share , but the process is slightly different from creating a share, because you need to retrieve the specific share to be removed, rather than the Win32_Share class. Следующий оператор удаляет сетевую папку TempShare :The following statement deletes the share TempShare :
(Get-CimInstance -Class Win32_Share -Filter "Name='TempShare'"). Delete()
Для Windows в этом случае подойдет и net share
:In Windows, net share
works as well:
net share tempshare /delete
tempshare was deleted successfully.
Подключение сетевого диска, доступного в WindowsConnecting a Windows Accessible Network Drive
Командлет New-PSDrive
позволяет создавать диски PowerShell, но они доступны только в PowerShell.The New-PSDrive
cmdlets creates a PowerShell drive, but drives created this way are available only to PowerShell. Для создания сетевого диска можно воспользоваться COM-объектом WScript.Network .To create a new networked drive, you can use the WScript.Network COM object. Следующая команда сопоставляет сетевую папку \\FPS01\users
с локальным диском B:
:The following command maps the share \\FPS01\users
to local drive B:
,
(New-Object -ComObject WScript. Network).MapNetworkDrive('B:', '\\FPS01\users')
В Windows также работает и команда net use
:On Windows, the net use
command works as well:
net use B: \\FPS01\users
Диски, сопоставленные с помощью WScript.Network или команды net use
, мгновенно становятся доступными в PowerShell.Drives mapped with either WScript.Network or net use
are immediately available to PowerShell.
PowerShell вместо Netsh | Windows IT Pro/RE
.
10. Список сетевых адаптеров. Основной сетевой командой является команда вывода списка сетевых адаптеров. Полезное дополнение к команде PowerShell – возможность включения дополнительного параметра –IncludeHidden для просмотра скрытых адаптеров, которые нельзя увидеть в графическом интерфейсе. Необходимая команда PowerShell:
Get-NetAdapater
9. Включение и выключение адаптеров. Очередная важная функция управления, которую можно выполнять с помощью PowerShell 3.0 – включение и выключение сетевого адаптера. На серверах необходимость в этом возникает редко, но на ноутбуках и планшетах такая возможность удобна при возникновении проблем с подключением к различным сетям. Эту задачу можно решить с помощью следующих команд:
Disable-NetAdapter -Name «Wireless Network Connection» Enable-NetAdapter -Name «Wireless Network Connection»
8. Отображение сведений о TCP/IP системы. Команда Get-NetIPConfiguration позволяет отобразить текущие параметры протокола TCP/IP системы. Можно увидеть текущие адреса IPv4 и IPv6, адрес шлюза и его состояние, а также адреса DNS-сервера. Для этого существует следующая команда:
Get-NetIPConfiguration -Detailed
7. Переименование сетевого адаптера. С помощью PowerShell 3.0 можно переименовать сетевой адаптер. Однако для этого, как и для изменения других параметров сети, необходимо обладать правами администратора. Изменять имя сетевого адаптера позволяет следующая команда:
Rename-NetAdapter -Name «Ethernet» -NewName «Public»
6. Установка нового статического IP-адреса. Чтобы для сетевого адаптера по имени Ethernet задать IP-адрес 192.168.100.115 и адрес шлюза 192.168.100.1, воспользуйтесь приведенной ниже командой, которая особенно удобна при настройке Windows Server Core:
$netadapter = Get-NetAdapter -Name Ethernet $netadapter | New-NetIPAddress -IPAddress 192.168.100.115 -PrefixLength 24 –DefaultGateway 192.168.100.1
5. Установка нового адреса DNS-сервера. При изменении IP-адреса системы часто приходится изменять адреса DNS-серверов. В приведенном ниже примере показано, как с помощью команды Set-DNSClientServerAddress можно выполнить настройку сетевого адаптера с адресом DNS-сервера 192.168.100.8:
$netadapter = Get-NetAdapter -Name Ethernet $netadapter | Set-DNSClientServerAddress -ServerAddresses 192. 168.100.8
4. Настройка сетевого адаптера на использование DHCP-адресации. PowerShell можно задействовать для настройки системы на использование адресов, назначаемых DHCP. Эта команда предписывает применять DHCP-адресацию для IP-адреса сетевого адаптера Ethernet:
$netadapter = Get-NetAdapter -Name Ethernet $netadapter | Set-NetIPInterface -Dhcp Enabled
3. Настройка интерфейса Ethernet на использование адреса DNS, назначаемого DHCP. Переход на DHCP-адресацию обычно требует и перехода на динамическое назначение адреса DNS-сервера. Эта команда предписывает интерфейсу Ethernet использовать назначаемый DHCP адрес DNS:
$netadapter = Get-NetAdapter -Name Ethernet $netadapter | Set-DnsClientServerAddress -InterfaceIndex 12 -ResetServerAddresses
2. Добавление правила брандмауэра Windows. Подобно тому, как Netsh работает с сетевыми настройками системы и параметрами брандмауэра Windows, приведенная ниже команда PowerShell позволяет настроить брандмауэр Windows на удаленное управление:
Set-NetFirewallRule -DisplayGroup «Windows Firewall Remote Management» -Enabled True
1. Включение и выключение брандмауэра Windows. Основная команда Windows Server – команда включения и выключения брандмауэра Windows. Приведенные ниже команды иллюстрируют возможность выполнения этой операции с помощью PowerShell:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Поделитесь материалом с коллегами и друзьями
Настройки сети с помощью PowerShell 4.0::Журнал СА 6.2014
Рубрика: Администрирование / | Мой мир Вконтакте Одноклассники Google+ |
Настройки сети с помощью PowerShell 4. 0
Microsoft заявляет, что постепенно классические консольные утилиты, к которым администраторы привыкли за долгое время, будут заменяться командлетами PowerShell
С выходом PowerShell 4.0 модуль Net TCP/IP [1] пополнился новыми командлетами, которые упростили настройку сети.
За настройку параметров интерфейса вместо netsh interface ipv4 отвечают два командлета – New-NetIPAddress и Set-NetIPAddress, синтаксис у них схож, оба могут создавать новые настройки, но второй позволяет модифицировать текущие.
New-NetIPAddress -InterfaceAlias Ethernet -IPv4Address 192.168.0.2 -DefaultGateway 192.168.0.1
Set-NetIPAddress -InterfaceAlias Ethernet -PrefixLength 24
Вместо InterfaceAlias удобнее использовать индекс InterfaceIndex, его легко узнать, просмотрев вывод Get-NetIPInterface.
Для удаления настроек IP используется командлет Remove-NetIPAddress.
Remove-NetIPAddress -IPAddress 192.168.0.2
Для корректной работы нам понадобится настроить адреса DNS-серверов, это решается с помощью командлета Set-DNSClientServerAddress (из состава модуля DNSClient):
Get-DnsClientServerAddress
Set-DNSClientServerAddress -InterfaceIndex 12 -ServerAddresses «192.168.0.1»,»8.8.8.8″
Текущие сетевые настройки можно узнать из выводов Get-NetIPAddress и Get-NetIPConfiguration (алиас gip), являющихся аналогами ifconfig. Например, Get-NetIPConfiguration выводит полную информацию о сетевых настройках: IP-адреса интерфейса и шлюза и DNS. Дополнительный параметр -Detailed позволит получить больше данных.
Команда route долго использовалась для просмотра и настройки маршрутов, теперь ему на замену идет набор командлетов *-NetRoute, очень простых и понятных в использовании. Получаем текущие настройки маршрутизации и устанавливаем новый маршрут по умолчанию.
Get-NetRoute
New-NetRoute -DestinationPrefix «0.0.0.0/0» -NextHop «192.168.0.1» -InterfaceIndex 12
Чтобы проверить доступность определенного узла, PowerShell предлагает два командлета: Test-Connection и Test-NetConnection (сокращенно tnc). Первый входит в основной модуль PowerShell Management и для проверки использует ICMP (в работе напоминает обычный ping).
Второй входит в состав модуля NetTCPIP и обладает большими возможностями, позволяя проверить доступность определенного порта или системы с разных ПК. Например, проверим подключение к SRV01.example.org с двух систем:
Test-NetConnection -ComputerName SRV01.example.org -source localhost, SRV02.example.org
Чтобы получить больше информации достаточно добавить ключ -InformationLevel Detailed, ключ -TraceRoute позволит произвести трассировку подключения (аналог tracert).
Для проверки, слушается ли порт, следует указать его номер (поддерживается четыре строковых параметра – SMB, HTTP, RDP и PING). Если ввести команду без указания узла, будет проверено подключение к Интернету.
Test-NetConnection -Port 80 -InformationLevel Detailed
Количество решаемых задач может быть очень велико, для каждых условий будут оптимальны разные настройки TCP, а установки по умолчанию эффективны не всегда.
Для тюнинга TCP предназначен набор командлетов *-NetTCPSetting и *-NetTransportFilter.
С помощью Get-NetTCPSetting получаем список преднастроек. По умолчанию SettingName установлено в значение Automatic, и настройки пусты. Зато существенно различаются между собой InternetCustom, DatacenterCustom, Compat, Datacenter и Internet, назначение которых понятно и без объяснений. Но редактировать можно только профили InternetCustom и DatacenterCustom. Какие подключения будет использовать профиль, можно выяснить, выполнив Get-NetTCPConnections.
Включим расширения IP ECN (Explicit Congestion Notification, явное уведомление о перегруженности, см. RFC 3168) и протокол DCTCP (Data Center TCP) для DatacenterCustom.
Set-NetTCPSetting -SettingName DatacenterCustom -ECNCapability Enabled -CongestionProvider DCTCP
Чтобы применить параметр TCP к порту с номером или диапазону IP-адреса назначения, надо создать транспортный фильтр с помощью командлета New-NetTransportFilter.
New-NetTransportFilter –SettingName DatacenterCustom –DestinationPrefix 172.16.0.0/16
Дополнительно можно задать локальный и удаленный порты.
- Описание командлетов модуля Net TCP/IP – http://technet.microsoft.com/en-us/library/hh826123.aspx.
Подготовил Сергей Яремчук
Мой мир
Вконтакте
Одноклассники
Google+
Используем PowerShell для конфигурирования сетевых адаптеров в Windows Server 2012 – Hey, Scripting Guy! Blog — sergey vasin
Резюме: Приглашенный блогер Microsoft MVP Jan Egil Ring рассказывает о том, как автоматически сконфигурировать сетевые адаптеры в Windows Server 2012 посредством Windows PowerShell 3.0.
Ознакомиться с предыдущим постом Jan Egil Ring вы можете здесь.
С выпуском Windows Server 2012, Microsoft представила встроенную поддержку Windows PowerShell для задач настройки сетевых адаптеров. Полный обзор командлетов для сетевых служб вы можете найти в библиотеке TechNet.
Обычный сценарий использования – это настройка свойств TCP/IP, для чего мы воспользуемся командлетами Net TCP/IP, которые доступны в модуле NetAdapter.
Import-Module NetAdapter
$netadapter = Get-NetAdapter -Name Ethernet
$netadapter | Set-NetIPInterface -DHCP Disabled
$netadapter | New-NetIPAddress -AddressFamily IPv4 -IPAddress 10.0.1.100 -PrefixLength 24 -Type Unicast -DefaultGateway 10.0.1.1
Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses 10.0.1.10
Для справки, равнозначная команда в network shell (netsh) следующая:
netsh interface ip set address name=»Ethernet» static 10.0.1.100 255.255.255.0 10.0.1.1 1
netsh interface ip set dns «Ethernet» static 10.0.1.10
Более продвинутый сценарий использования – это настройка свойств TCP/IP на компьютерах с несколькими сетевыми адаптерами. Один из примеров – это узлы кластера Hyper-V, который могут обладать следующими сетевыми адаптерами:
•Management – Используется для удаленного управления, доменного трафика, агентов управления и т.д.
•Heartbeat – Выделенный адаптер для пульса в failover clustering.
•CSV – Выделенный адаптер для траффика Cluster Shared Volume.
•Live Migration – Выделенный адаптер для живой миграции виртуальных машин между хостами.
•Virtual switch – Выделенный адаптер для внешнего виртуального свитча Hyper-V, обычно подключаемого к транковому порту коммутатора.
Число сетевых адаптеров может различаться в зависимости от числа виртуальных свитчей и использования NIC Teaming. В нашем примере мы сконфигурируем хост Hyper-V, содержащий 5 сетевых адаптеров.
Конфигурирование настроек TCP/IP и имен для адаптеров в подобном сценарии может стать довольно долгим делом, так как вам нужно будет выяснить, к какой VLAN и к какому порту свитча подключен каждый сетевой адаптер. Один из способов облегчить задачу – это создание CSV-файла, содержащего необходимую информацию, используя, например, Microsoft Excel. CSV-файл может содержать конфигурационную информацию для сетевых адаптеров одного или нескольких серверов. Вот примерный CSV-файл:
«Computername»,»NIC»,»MAC»,DHCP,AddressFamily,IPAddress,PrefixLength,Type,DefaultGateway,DnsServerAddresses
«HPV10001″,»Server_Management»,»00-25-B5-01-00-7F»,»false»,»IPv4″,»10.10.10.100″,»23″,»Unicast»,»10.10.10.1″,»10.10.10.100,10.10.10.101″
«HPV10001″,»Hyper-V_VMSwitch_Trunk»,»00-25-B5-01-00-6F»,»true»,,,,,,
«HPV10001″,»FailoverCluster_Heartbeat»,»00-25-B5-01-00-EF»,»false»,»IPv4″,»172.30.3.161″,»24″,,
«HPV10001″,»FailoverCluster_CSV»,»00-25-B5-01-00-DF»,»false»,»IPv4″,»172.30.2.161″,»24″,,
«HPV10001″,»Hyper-V_LiveMigration»,»00-25-B5-01-00-FF»,»false»,»IPv4″,»172.30.1.161″,»24″,,
Теперь вы можете воспользоваться командлетами модуля NetAdapter для автоматической конфигурации настроек на хосте Hyper-V.
$NICs = Import-Csv «c:\temp\nic-config.csv» | Where-Object {$_.computername -eq $env:COMPUTERNAME}
foreach ($NIC in $NICs) {
$NetAdapter = Get-NetAdapter | Where-Object {$_.MacAddress -eq $NIC.MAC}
if ($NetAdapter) {
Write-Verbose «Found NIC $($NIC.NIC)»
$NetAdapter = $NetAdapter | Rename-NetAdapter -NewName $NIC.NIC –PassThru
if ($NIC.DHCP -eq ‘false’) {
Write-Verbose «Configuring TCP/IP settings for NIC $($NIC.NIC)»
$NetAdapter = $NetAdapter | Set-NetIPInterface -DHCP Disabled –PassThru
$NICAttributes = @{}
if ($NIC.AddressFamily) {
$NICAttributes.Add(‘AddressFamily’,$NIC.AddressFamily)
}
if ($NIC.IPAddress) {
$NICAttributes.Add(‘IPAddress’,$NIC.IPAddress)
}
if ($NIC.PrefixLength) {
$NICAttributes.Add(‘PrefixLength’,$NIC.PrefixLength)
}
if ($NIC.Type) {
$NICAttributes.Add(‘Type’,$NIC.Type)
}
if ($NIC.DefaultGateway) {
$NICAttributes.Add(‘DefaultGateway’,$NIC.DefaultGateway)
}
$NetAdapter | New-NetIPAddress @NICAttributes
if ($NIC.DnsServerAddresses) {
Set-DnsClientServerAddress -InterfaceAlias $($NIC.NIC) -ServerAddresses $NIC.DnsServerAddresses
}
}
}
}
Заметка: Назначение этого примера – это представить возможный сценарий использования. В промышленной среде вы скорее всего решите расширить функциональность скрипта, добавив такие вещи, как обработку ошибок и журналирование.
Хотя скрипт автоматизирует фазу конфигурации, вам все еще нужно вручную получить MAC-адреса каждого адаптера. Если поставщик аппаратного обеспечения поддерживает какой-либо вид автоматизации, вы сможете собрать эту информацию автоматически. Один из примеров – это Cisco Unified Computing System (UCS), который предоставляет модуль Windows PowerShell для автоматизации каждого аспекта, касающегося серверного оборудования. Для дополнительной информации, ознакомьтесь со статьей Getting started with Cisco UCS PowerShell Toolkit в моем блоге.
Далее представлен пример скрипта, который генерирует CSV-файл, содержащий имя сервера, имя сетевого адаптера и MAC-адреса для всех серверов Hyper-V в системе Cisco UCS:
Import-Module CiscoUcsPS
Connect-Ucs -Name 10.10.10.50 -Credential (Get-Credential)
$output = @()
$path = «c:\temp\nic-config.csv»
$serverprofiles = Get-UcsServiceProfile | Where-Object {$_.name -like «*hpv*»}
foreach ($server in $serverprofiles) {
$VNICs = Get-UcsVnic -ServiceProfile $($server.name)
foreach ($VNIC in $VNICs) {
Заметка: Транковый интерфейс содержит несколько обектов VnicInterface.
$VnicInterface = $VNIC | Get-UcsVnicInterface | Select-Object -First 1
$output += New-Object -TypeName pscustomobject -Property @{
Computername = $($server.name)
NIC = $VnicInterface.Name
MACAddress = $VnicInterface.Addr
VLAN = $VnicInterface.Vnet
}
}
}
$output | Select-Object Computername,NIC,VLAN,MAC,DHCP,AddressFamily,IPAddress,PrefixLength,Type,DefaultGateway,DnsServerAddresses | Export-Csv -Path $path -NoTypeInformation
Заметка: Я также добавил несколько свойств, которые не присутствовали в pscustomobject. Это сделано для того, чтобы CSV-файл содержал все свойства, которые вы сможете позже отредактировать для использования со скриптом конфигурации сетевых адаптеров.
Summary
В этом посте мы рассмотрели основные возможности одного из модулей для работы с сетевыми службами в Windows Server 2012, а также сценарий его использования вкупе со сторонним модулем Windows PowerShell. Одни из преимуществ по сравнению с ранее использовавшимися утилитами командной строки, такими как netsh.exe – это возможности исследования и объектная модель Windows PowerShell. Например, мы можем воспользоваться такими командлетами, как Get-Command, Show-Command, Get-Help, и Get-Member для определения того, чем мы можем воспользоваться, а также стандартными командлетами *-Object для манипуляции данными.
Дополнительные ресурсы
Using PowerShell for NIC Configuration Tasks
Use PowerShell 3.0 to Work with Network Adapters
Hyper-V Cmdlets in Windows PowerShell
Windows PowerShell Support for Windows Server 2012
Автор:
Ed Wilson, Microsoft Scripting Guy
Оригинал:
http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/21/use-powershell-to-configure-the-nic-on-windows-server-2012.aspx
Страницы в социальных сетях:
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell
Все способы настройки сети в Windows Server 2016
Настройка сетевых параметров — это один из первых шагов, с которых необходимо начинать настройку Windows Server 2016. Независимо от того, используете ли вы Windows Server с графическим интерфейсом (GUI) или Core версию, изменение IP-адреса, маски подсети, шлюза и DNS-серверов можно выполнить несколькими способами.
В данной статье вы увидите, как в Windows Server 2016 изменить основные сетевые параметры IPv4 для сетевых адаптеров вашей системы с помощи GUI, PowerShell, утилиты SConfig и командной строки.
Настройка сетевых параметров с помощью графического интерфейса Windows
Итак, сам процесс настройки сети достаточно прост.
Щелкните правой кнопкой мыши по значку сети в области уведомлений, затем выберите пункт меню «Open Network and Sharing Center».
В открывшемся окне нажмите ссылку «Change adapter settings» в левой части окна, чтобы отобразить все сетевые адаптеры сервера.
Щелкните правой кнопкой мыши по сетевому адаптеру, настройки которого вы хотите изменить, затем выберите пункт меню «Properties».
В появившемся окне выделите строку «Internet Protocol Version 4 (TCP / IPv4)» и нажмите кнопку «Properties».
Затем следует переключится с автоматического типа настройки сети (через DHCP), активировав пункт «Use the following IP address» и ввести статический IP-адрес вашего сервера, маску подсети, шлюз, который будет использоваться по умолчанию, основной и альтернативный DNS-сервера.
Нажмите кнопку «OK», после этого все изменения будут сохранены. На этом процесс настройки завершен.
Настройка сети с помощи PowerShell
Для того чтобы изменить настройки конкретного адаптера вам необходимо сначала определить индекс этого интерфейса (InterfaceIndex). Сделать это можно при помощи команды Get-NetIPConfiguration. После ввода команды на экране появятся текущие настройки всех сетевых адаптеров. Обратите внимание на значение строки «InterfaceIndex».
С помощью команды Get-NetAdapter можно получить информацию о состоянии сетевых интерфейсов сервера. Обратите внимание на значение столбца «ifIndex».
Для того, чтобы установить статический IP-адрес, маску подсети и шлюз по умолчанию для интерфейса с индексом 2, выполните следующую команду PowerShell:
New-NetIPAddress -InterfaceIndex 2 -IPAddress 192.168.2.100 -PrefixLength 24 -DefaultGateway 192.168.2.1
Чтобы указать основной и альтернативный DNS-сервера, необходимо воспользоваться командой:
Set-DnsClientServerAddress
Пример команды представлен ниже:
Set-DnsClientServerAddress -InterfaceIndex 2 -ServerAddresses 192.168.2.10, 192.168.2.11
После всех изменений можно убедиться в корректности указанных вами сетевых настроек, для этого воспользуйтесь уже известной нам командой:
Get-NetIPConfiguration
Настройка параметров сети с помощью инструмента SConfig
Существует еще один способ изменения сетевых параметров – при помощи утилиты SConfig. Для запуска этой утилиты необходимо открыть PowerShell и ввести команду SConfig
, после чего нажать «Enter».
Для входа в меню «Network Settings» введите цифру 8. Далее необходимо будет ввести индекс сетевого адаптера, настройки которого вы хотите поменять.
Затем, для установки статического IP-адреса, маски подсети, шлюза по умолчанию и DNS-серверов необходимо воспользоваться пунктами меню 1 — Set Network Adapter Address и 2 — Set DNS Servers. Я не буду описывать эту часть очень подробно т.к. весь интерфейс очень прост и интуитивно понятен.
Настройка сети из командной строки с помощью netsh
Для настройки сетевых параметров сервера при помощи командной строки Windows, воспользуемся командой netsh.
Сначала нам потребуется узнать имя сетевого адаптера, параметры которого нужно настроить. Введем команду:
netsh interface ipv4 show config
В нашем случае это Ethernet0.
Чтобы изменить IP-адрес, маску подсети и шлюз по умолчанию выполните следующую команду
netsh interface ipv4 set address name = "INTERFACE_NAME" static IP_ADDRESS SUBNET_MASK GATEWAY
Пример команды:
netsh interface ipv4 set address name = "Ethernet0" static 192.168.1.22 255.255.255.0 192.168.1.1
Формат команды для настройки основного DNS-сервера:
netsh interface ipv4 set dns name = "INTERFACE_NAME" static DNS_SERVER
Например:
netsh interface ipv4 set dns name = "Ethernet0" static 192.168.1.10
Чтобы настроить альтернативный DNS-сервер, нужно в команде использовать ключ index, определяющий приоритет данного DNS сервера:
netsh interface ipv4 set dns name = "INTERFACE_NAME" static DNS_SERVER index = 2
Например:
netsh interface ipv4 set dns name = "Ethernet0" static 192.168.1.11 index = 2
На этом настройка IP параметров сетевой карты сервера завершена. Чтобы проверить правильность сделанных настроек воспользуйтесь командой:
netsh interface ipv4 show config
⚙ПОЛЕЗНЫЕ СЕТЕВЫЕ КОМАНДЫ ДЛЯ WINDOWS POWERSHELL
Windows PowerShell становится одним из лучших вариантов управления Windows как на уровне организации, так и на домашнем уровне, благодаря множеству командлетов, разработанных для обеспечения лучшего уровня управления по мере необходимости.
На этот раз мы увидим некоторые из лучших команд сетевого уровня, которые мы можем использовать в PowerShell для получения точной и полезной информации.
Полезные сетевые команды для использования с Windows Powershell
Get-NetAdapter
С помощью этой команды он показывает основные свойства сетевого адаптера.
Эта команда похожа на следующую:
netsh interface show interface
примечание
Если мы хотим получить информацию об определенном адаптере, мы выполним следующее:
Get-NetAdapter -Name * interface *
Get-NetIpAddress
Благодаря этой команде у нас будет доступ к настройке IP-адреса, как IPv4 и IPv6, так и соответствующих сетевых интерфейсов.
Мы можем увидеть подробную информацию о таких параметрах, как:
- Идентификатор интерфейса
- Суффикс и многое другое.
Get-NetIPConfiguration
С помощью этой команды мы получим информацию о конфигурации сети, используемых интерфейсах, IP-адресах и DNS-адресах системы.
Get-NetConnectionProfile
Благодаря этой команде мы получим профиль подключения, связанный с настроенными сетевыми адаптерами.
Get-NetRoute
Благодаря этой команде мы получим весь маршрут, используемый пакетами в процессе отправки и получения:
Get-NetAdapter | ft Имя, Статус, Скорость соединения, VlanID
Это позволяет нам получить подробную информацию о каждом адаптере с указанием его статуса, скорости и идентификатора VLAN, если он имеет:
Get-NetAdapter | ft имя, DriverName, DriverVersion, DriverInformation, DriverFileName
Благодаря этой команде мы сможем увидеть подробную информацию о каждом сетевом адаптере, такую как местоположение драйвера, версия драйвера и т. Д .:
Отключить или включить адаптер Wi-Fi
Чтобы включить или отключить сетевой адаптер, мы выполним следующее:
Disable-NetAdapter -Name "Беспроводное сетевое соединение" Enable-NetAdapter -Name "Беспроводное сетевое соединение"
Переименовать сетевой адаптер Wi-Fi
Чтобы переименовать сетевой адаптер Wi-Fi, мы выполним следующий синтаксис:
Get-NetAdapter -Name «LAN» | Get-DnsClientServerAddress
Эта команда позволяет нам получить адрес DNS-сервера с его интерфейсом, типом и полным адресом:
Установите IP-адрес
В случае, если мы хотим установить новый IP-адрес в системе, мы выполним следующее:
New-NetIPAddress -InterfaceAlias "Интерфейс" -IPv4Address (IP-адрес) -PrefixLength "24"
Удалить IP-адрес
В случае, если мы хотим удалить IP-адрес, мы выполним следующий синтаксис:
Get-NetAdapter -Name "Интерфейс" | Remove-NetIPAddress
Пинг с PowerShell
Мы знаем, что можем запустить команду ping для проверки состояния удаленного компьютера, и с помощью PowerShell мы можем выполнить эту задачу, просто выполнив следующий синтаксис:
Test-NetConnection -ComputerName (сайт)
Результат будет следующим:
Если мы хотим получить больше информации, мы можем выполнить следующее:
Test-NetConnection -Компьютерное имя www.solvetic.com -Информационный уровень Подробно
Запустите tracert с помощью PowerShell
Tracert — это базовая команда, которая позволяет нам подробно узнать маршрутизаторы, через которые пакеты отправляются в определенный пункт назначения.
Чтобы запустить tracert в PowerShell, мы должны ввести следующее:
Test-NetConnection (Destination) –TraceRoute
Полученный результат будет:
Проверка порта
С помощью Windows PowerShell можно узнать состояние открытых портов на конечном компьютере.
Чтобы проверить, например, порт 80, мы выполним следующее:
Test-NetConnection -ComputerName (Destination) -Port 80
Для проверки портов HTTP мы запускаем:
Test-NetConnection -ComputerName (Destination) -CommonTCPPort HTTP
Запустите NSLOKKUP с PowerShell
NSLOOKUP был разработан, чтобы находить информацию о серверах имен для доменов, консультируясь с Системой доменных имен (DNS).
Мы можем запустить эту утилиту, используя PowerShell со следующим синтаксисом. Там мы получаем подробную информацию о DNS.
Resolve-DnsName www.solvetic.com
Просмотр информации о сети
Netstat — это утилита, которая дает нам возможность узнать текущее состояние сети, портов и их владельца. Для этого мы выполним следующее:
Get-NetTCPConnection
Этот результат может быть отфильтрован для тех портов, состояние которых стабильно, для этого мы выполняем следующее:
Get-NetTCPConnection - Государство установлено
Как мы видим, у нас под рукой есть ряд команд, которые помогут нам получать информацию, актуализировать и выполнять множество задач управления по некоторым параметрам сети в системе Windows.
Как изменить профиль сети Windows Server — Записки сумасшедшего дроида
Одна из неприятностей, которые иногда случаются с новым сетевым подключением в Windows 8.х состоит в том, что сеть неправильно определяется как общественная (Public Network), когда должен быть определена как частная (Private), и наоборот. Из графического интерфейса Центра управления сетями и общим доступом нельзя сменить тип сети.
На текущий момент существует 3 способа произвести эти изменения, это PowerShell, реестр и Локальная групповая политика.
Через Windows PowerShell:
1. Запускаем PowerShell от администратора
Start-Process PowerShell.exe -verb RunAs
2. Запускаем команду, определяющий тип подключения к ЛВС:
Соответственно, результат выполнения команды будет примерно такой:
Name : Network 4
InterfaceAlias : Ethernet0
InterfaceIndex : 3
NetworkCategory : Public
IPv4Connectivity : Internet
IPv6Connectivity : LocalNetwork
Как можно видеть «проблемный» интерфейс имеет индекс 3 и тип сети Public.
Это же подтверждается и через Проводник Windows, и, как видим, GUI не дает возможности поменять тип подключения.
3. Выполняем команду, которая меняет тип подключения с Public на Private интерфейс, InterfaceIndex которого равен 3
Set-NetConnectionProfile -InterfaceIndex 3 -NetworkCategory Private
Через Реестр:
Изменить тип сети можно с помощью редактора реестра. Для этого нужно запустить regedit.exe и перейти к ключу:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
Найти нужный профиль сети можно по имени в Центре управления сетями, которое указано в ключе реестра ProfileName. Тип сети задается в параметре Category. Доступны следующие значения этого ключа:
Через Локальную групповую политику (Local Security Policy):
Запустите оснастку secpol.msc и перейдите в раздел Network List Manager Policies. В списке сетей справа найдите сеть по ее имени в Центре управления сетями. Откройте свойства сети и перейдите на вкладку Network Location, измените тип сети на Private и сохраните изменения.
10 командлетов PowerShell для ускорения устранения неполадок сети
Правильные командлеты PowerShell могут помочь вам быстро и легко выявлять проблемы с сетью и решать проблемы с подключением. Вот 10 для начала.
Изображение: iStock / gorodenkoff
По мере того, как Microsoft выпускает новые версии своих клиентских и серверных ОС Windows, она продолжает удваивать PowerShell (PS), платформу, разработанную для управления системами и автоматизации.Благодаря постоянно расширяющемуся списку команд, называемых командлетами, PS готов помочь в настройке практически любых параметров, имеющихся в Windows.
Несмотря на то, что PS может похвастаться огромным количеством командлетов, к счастью, большинство из них сгруппированы по функциям или службам, которыми они управляют. Для целей этой статьи все командлеты, относящиеся к управлению сетевыми параметрами, находятся в базовой платформе PowerShell.
ПОСМОТРЕТЬ: Набор для найма: сетевой администратор (Tech Pro Research)
Перед тем, как углубиться в командлеты, необходимо выполнить несколько требований, чтобы гарантировать, что все командлеты доступны и полностью поддерживаются:
- ПК с установленной Windows Vista (или новее)
- Windows Management Framework 3.0 (или новее)
- Коммутируемая сеть (требуется для правильного функционирования большинства командлетов)
- Широкополосный доступ в Интернет (необязательно, но рекомендуется)
1. Пинговать устройства локально или удаленно
Test-NetConnection -ComputerName «Имя хоста или IP-адрес «
Командлет Test-NetConnection предлагает несколько способов тестирования сетевого подключения в LAN и WAN. Введите команду, как указано выше, и компьютер по существу выполнит эхо-запрос, чтобы определить, существует ли сетевое соединение между локальным устройством и целевым компьютером или доменом.
2. Проверьте подключение на основе порта или службы
Test-NetConnection «Имя хоста» -Port #
Еще одной особенностью командлета Test-NetConnection является возможность проверки связи между локальным устройством и целевым хостом путем указания номера порта. Это чрезвычайно полезно для тестирования служб между устройствами и портами, через которые они обмениваются данными.
3. Трассировка маршрута связи
Test-NetConnection «Hostname» -traceroute
Важным инструментом является выполнение трассировки маршрута для определения количества переходов (или шагов), через которые должен пройти пакет, чтобы добраться от источника до пункта назначения. поскольку это позволяет вам увидеть, куда идет передача, и, что более важно, была ли она успешной.Если это не так, трассировка маршрута укажет, где произошел сбой пакета на пути.
SEE: Руководство ИТ-профессионала по экономии времени с помощью PowerShell (бесплатный TechRepublic PDF)
4. Получение сведений о конфигурации IP
Get-NetIPConfiguration
Подобно команде ipconfig, командлет Get-NetIPConfiguration обеспечивает целостное представление о сети конфигурации, установленные на сетевых адаптерах компьютера. Адреса IP, DNS и шлюза отображаются и сортируются по имени адаптера.
5. Выполните поиск в DNS
Resolve-DnsName -Name «Hostname»
Возможно, основой сети является служба DNS. Без него пользователи были бы вынуждены знать IP-адреса всех веб-сайтов и служб. И все же, когда возникают проблемы с подключением, DNS часто является виновником после исключения ошибок, связанных с IP. Добавив переключатель «-сервер», за которым следует IP-адрес DNS-сервера, ИТ-отдел может выполнить запрос разрешения DNS для конкретного сервера, чтобы убедиться, что разрешение работает правильно.
SEE: набор сценариев PowerShell администратора Windows (Tech Pro Research)
6. Просмотр текущих TCP-подключений
Get-NetTCPConnection
Как и перед netstat, командлет Get-NetTCPConnection позволяет просматривать текущие TCP-подключения, которые имеют были сделаны к / от устройства, а также открыты или прослушивают соединения. Это поможет вам устранить проблемы, связанные с IP-адресами и портами, особенно с теми, которые связаны с определенными сетевыми службами.
7.Просмотр и установка информации DNS
Get-DnsClient
Set-DnsClientServer Address
Этот командлет позволяет проверить информацию о клиенте DNS для устройства. Он укажет, какой DNS-сервер (-ы) используется устройством для выполнения разрешения адресов, как настроено на нескольких адаптерах. Командлет Set-DnsClientServerAddress позволяет добавлять указанные DNS-серверы в конфигурацию сети.
8. Очистить кеш DNS
Clear-DnsClientCache
Кэш DNS помогает хранить часто используемые записи разрешения DNS, хранящиеся локально на устройстве, позволяя читать эту запись вместо выполнения поиска каждый раз, когда она запрашивается.Это помогает ускорить и без того быстрый процесс разрешения. Если присутствуют устаревшие записи или те, которые не были обновлены, это может привести к снижению производительности сети, отказу в обслуживании или проблемам безопасности, которые стремятся использовать неверные записи, которые направляют запросы пользователей на неправильный сервер / службу.
9. Освободить и продлить аренду DHCP
Invoke-Command -ComputerName -ScriptBlock {ipconfig / release}
Invoke-Command -ComputerName -ScriptBlock {ipconfig / refresh}
Хотя PowerShell включает в себя множество командлетов для управления настройками сети, есть нет прямого способа освободить / продлить аренду DHCP без ссылки сначала на другой командлет, а затем передачи результатов на второй или третий командлет, чтобы иметь возможность изменить настройку DHCP.Однако, используя Invoke-Command, вы можете удаленно (или через скрипт) выполнить выпуск и / или продлить, вызвав команду ipconfig.
10. Отключение и включение сетевых адаптеров
Disable-NetAdapter -Name «Имя адаптера»
Enable-NetAdapter -Name «Имя адаптера»
Последний, но не менее важный, командлет для отключения / включения сетевых адаптеров на устройстве. Хотя это и не такой фантастический метод устранения сетевых проблем, как перечисленные выше командлеты, как вам скажет любой ИТ-специалист, иногда единственное, что вам нужно сделать для решения сетевой проблемы, — это выключить и снова включить его.
Еженедельный бюллетень Microsoft
Будьте инсайдером Microsoft в своей компании, прочитав эти советы, рекомендации и шпаргалки по Windows и Office.
Доставка по понедельникам и средам.
Зарегистрироваться Сегодня
Другие варианты?
Какие командлеты PowerShell лучше всего подходят для решения задач по устранению неполадок в сети? Поделитесь своим опытом и советами с другими участниками TechRepublic в ходе обсуждения ниже.
Управление настройками сети с помощью PowerShell 7
Встроенный модуль PowerShell 7 NetTCPIP
в Windows предлагает ряд функций для обновления сетевых интерфейсов и управления ими. Многие традиционные задачи ИТ-администрирования, такие как установка статического IP-адреса или настроек DNS-сервера, являются тривиальными при использовании функций в модуле NetTCPIP
.
Давайте рассмотрим типичную серию шагов, с которыми могут столкнуться многие ИТ-администраторы.Настройка нового сервера и связанного с ним сетевого интерфейса.
Обнаружение сетевых интерфейсов
Возможно, вам было поручено настроить новую виртуальную машину (ВМ) и настроить ее сетевой интерфейс. Вместо того, чтобы использовать графический интерфейс, вы знаете, что PowerShell уже установлен в последней версии и готов к работе. После открытия нового сеанса консоли первое, что нам нужно сделать, это посмотреть, какие у нас в настоящее время сетевые интерфейсы.
Командлет Get-NetAdapter
отобразит каждый сетевой интерфейс, о котором знает система.Оттуда мы можем дополнительно отфильтровать результаты, чтобы просто добраться до того, что мы хотим изменить.
PS C: \> Get-NetAdapter Имя Интерфейс Описание ifIndex Status MacAddress LinkSpeed —- ——————— —- — —— ———- ——— Ethernet 1 Realtek USB GbE Family Controller # 1 14 Up 98-E7-43-C1-13 -5E 1 Гбит / с Ethernet 2 Контроллер семейства Realtek USB GbE # 2 15 Отключено 98-E7-43-3C-7A-00 1 Гбит / с |
В этом конкретном сервере у нас есть два сетевых интерфейса, о которых нужно беспокоиться.Чтобы убедиться, что мы работаем только над тем, который нам нужен, давайте просто возьмем наш интерфейс Ethernet 1
и сохраним его в переменной $ Adapter
для дальнейшего использования.
PS C: \> $ Adapter = Get-NetAdapter -Name «Ethernet 1» PS C: \> $ Adapter Имя Интерфейс Описание ifIndex Status MacAddress LinkSpeed —- —— ————— ——- —— ———- ——— Ethernet 1 Семейный контроллер Realtek USB GbE # 1 14 Up 98-E7-43-C1-13-5E 1 Гбит / с |
Отключение ненужных сетевых интерфейсов
Ранее мы упоминали, что в этой системе было два сетевых интерфейса.Что ж, второй нам не нужен. Хотя он может быть использован в будущем, лучше избегать путаницы, поэтому отключим интерфейс. После этого убедимся, что он действительно отключен.
PS C: \> Disable-NetAdapter -Name «Ethernet 2» PS C: \> Get-NetAdapter -Name «Ethernet 2» Имя InterfaceDescription ifIndex Status MacAddress LinkSpeed —- — —————— ——- —— ———- ——— Ethernet 2 Контроллер семейства Realtek USB GbE # 2 15 Отключено 98-E7-43-3C-7A-00 1 Гбит / с |
Настройка статического IP-адреса
Теперь, когда у нас есть желаемый сетевой интерфейс, нам нужно назначить предоставленную нам информацию об IP-адресации.Наша сетевая команда предоставила нам следующие данные IP для назначения.
- IP-адрес:
10.0.0.100
- Подсеть:
255.255.255.240
- Шлюз:
10.0.0.1
- Длина префикса:
24
Учитывая приведенные выше сведения, мы можем назначить эти значения нашему сетевому интерфейсу с помощью командлета New-NetIPAddress
. Используя ранее сохраненный адаптер в нашей переменной $ Adapter
, мы можем быстро обновить конфигурацию сетевого интерфейса.
$ Params = @ ( «IPAddress» = ’10 .0.0.100 ‘ «DefaultGateway» = ’10 .0.0.1′ «PrefixLength» = 24 «InterfaceIndex» = $ Adapter.InterfaceIndex ) New-NetIPAddress @Params |
Прежде чем мы продолжим, мы должны убедиться, что конфигурация принята правильно. Используя ту же переменную $ Adapter
, мы можем извлечь только ту информацию, которую мы хотим из нашего интерфейса.
PS C: \> Get-NetIPConfiguration -InterfaceIndex $ Adapter.Index InterfaceAlias: Ethernet 1 InterfaceIndex: 14 InterfaceDescription: Realtek USB GbE Family Controller # 1 NetProfile 10.0.0.100 IPv6DefaultGateway: IPv4DefaultGateway: 10.0.0.1 DNSServer: |
Переименование сетевого адаптера
Если в системе несколько сетевых адаптеров, может быть очень полезно присвоить им имена в соответствии с их функциями.В этом случае мы хотим переименовать наш первый адаптер в Internal Network
. Это поможет отличить его от нашего вторичного адаптера, когда мы принесем его только в конце концов. К счастью, есть удобная функция Rename-NetAdapter
, которую мы можем использовать. К сожалению, он не принимает InterfaceIndex
, и вы должны использовать имя интерфейса.
PS C: \> Rename-NetAdapter -Name «Ethernet 1» -NewName «Internal Network» PS C: \> Get-NetAdapter -Name «Internal Network» Name InterfaceDescription ifIndex Status MacAddress LinkSpeed —- ——————— ——- —— ———- — ——— Внутренняя сеть Realtek USB GbE Family Controller # 1 14 Up 98-E7-43-C1-13-5E 1 Гбит / с |
Настройка настраиваемых DNS-серверов
Хотя мы настроили наш новый интерфейс, что-то не так с нашими DNS-серверами, особенно то, что у нас их нет! В этом случае нам необходимо установить их вручную, как указано нашей сетевой командой.
- DNS-сервер 1 :
172.100.100.1
- DNS-сервер 2 :
172.100.100.2
Используя Set-DNSClientServerAddress
, мы можем определить адреса нашего DNS-сервера, которые будут использоваться на данном интерфейсе. Вы можете заметить использование ускорителя [IPAddress]
, он проверит IP-адрес и выдаст ошибку в случае, если мы ошиблись или использовали неправильный.
$ DNSServers = @ ( ([IP-адрес] «172.100.100.1 «). IPAddressToString ([IPAddress]» 172.100.100.2 «). IPAddressToString ) Set-DNSClientServerAddress -InterfaceIndexer $ Adapter.Interface12Index 9 -S |
После того, как мы запустим Get-NetIPConfiguration
еще раз, мы увидим, что наши адреса DNS теперь установлены! Как вы можете видеть ниже, свойство InterfaceAlias
показывает наше новое имя, которое мы также установили ранее.
PS C: \> Get-NetIPConfiguration -InterfaceIndex $ Adapter.Index InterfaceAlias: внутренняя сеть InterfaceIndex: 14 InterfaceDescription: Realtek USB GbE Family Controller # 1 NetProfile 10.0.0.100 IPv6DefaultGateway: IPv4DefaultGateway: 10.0.0.1 DNSServer: 172.100.100.1 172.100.100.2 |
Управление сетевыми интерфейсами с помощью PowerShell 7
Хотя это только начало, если вы сделаете еще один шаг, вы могли бы написать эти задачи для применения к нескольким серверам. Если вам поставили задачу подготовить большое количество компьютеров, используя эти командлеты, вы сможете быстро выполнить эту задачу. Это может сэкономить бесчисленные часы, застрявшие в графическом интерфейсе пользователя, и в конечном итоге сделать вас, администратора, гораздо более продуктивным.
Как вы понимаете, управлять нашим сетевым интерфейсом в PowerShell 7 просто. ИТ-администратор может быстро автоматизировать настройку и настройку, используя для этого множество доступных команд!
Petri.com каждую пятницу публикует статьи о глубоких технологиях от MVP и наших собственных экспертов. Подпишитесь на этот еженедельный информационный бюллетень, наполненный наиболее впечатляющими статьями Petri.com за эту неделю.
Petri.com может использовать вашу контактную информацию для предоставления обновлений, предложений и ресурсов, которые могут вас заинтересовать.Вы можете отписаться в любое время. Чтобы узнать больше о том, как мы управляем вашими данными, вы можете прочитать нашу Политику конфиденциальности и Условия использования.
! Уже зарегистрированы на Petri.com? Войдите здесь для регистрации в 1 клик.
Мониторинг сетевой нагрузки с помощью Powershell
Мониторинг — важный вид деятельности в ИТ-операциях, он необходим для корреляции состояния всех движущихся частей наших систем и приложений и создания общей картины состояния всей среды.Прежде чем погрузиться в кроличью нору сложных инструментов и методов мониторинга, давайте начнем с определения того, что мониторинг может быть субъективным, а в каждом конкретном случае может быть очень простым или подробным и может позволить вам выбрать конкретный инструмент или стратегию. Не существует универсального решения. На этой неделе мне нужно было реализовать настраиваемую проверку для отслеживания загрузки / использования сети в любой ОС Windows, и вместо того, чтобы искать сторонний инструмент и развертывать, возможно, еще один агент на серверах, я написал сценарий Powershell для выполнения этого действия.
Мне нравится вкладывать время и силы в мониторинг, особенно в локальных средах. На самом деле, я думаю, что в этих средах чаще встречаются устаревшие системы или тонкая интеграция между различными программными решениями, и для их правильной поддержки может потребоваться дополнительная осторожность. Напротив, все поставщики общедоступных / частных облаков предлагают мониторинг инфраструктуры как часть предложения, поскольку они встроены в платформу и необходимы, если они хотят выставлять вам поминутный счет. В моем идеальном мире я хотел бы иметь такую же видимость и детализацию, даже если некоторые из этих усилий могут показаться излишними в большинстве моих сценариев использования.
NSCP
То, что я часто использую даже в локальной или облачной инфраструктуре, — это NagiOS, я использую ее для Linux, Windows и сетевых устройств. Серверу Nagios могут потребоваться агенты, если вы хотите выполнять мониторинг белого ящика (или внутри ящика). Для ОС Windows агент Nscp ++ может контролировать большинство вещей, которые мне нужны, с небольшой помощью PowerShell, пакетного сценария или любого исполняемого файла, но сетевой нагрузки на сетевую карту сразу же нет. .
За последние 3 года я создал всевозможные пользовательские проверки, специфичные для операционной системы, физического компьютера или приложения, установленного на хосте, но сетевая нагрузка на виртуальные машины была чем-то, в чем я никогда раньше не нуждался.
Typeperf
Я начал смотреть на Typeperf
PS D: \> typeperf «\ Сетевой интерфейс (*) \ Всего байт / сек»
«(PDH-CSV 4.0)», «\\ MYWS \ Сетевой интерфейс (контроллер семейства Realtek PCIe GbE) \ Всего байтов / сек», «\\ MYWS \ Сетевой интерфейс (адаптер Intel [R] PRO_1000 MT для настольных ПК) \ Всего байтов / сек »
«02.06.2020 21: 58: 00.053», «34466.207676», «0,000000»
«06.02.2020 21: 58: 01.055», «13841.420713», «0,000000»
«06.02.2020 21: 58: 02.059», «6039.413770», «0.000000 »
«06.02.2020 21: 58: 03.062», «6070.615071», «0,000000»
«06.02.2020 21: 58: 04.066», «6891.797387», «0,000000»
«06.02.2020 21: 58: 05.068», «7167.699324», «0,000000»
«06.02.2020 21: 58: 06.071», «27653.817318», «0,000000»
PS D: \> typeperf «\ Network Interface (*) \ Bytes Total / sec» «(PDH-CSV 4.0)», «\\ MYWS \ Network Interface (Realtek PCIe GbE Family Controller) \ Bytes Всего / сек «,» \\ MYWS \ Сетевой интерфейс (адаптер Intel [R] PRO_1000 MT для настольных ПК) \ Всего байт / сек « » 06.02.2020 21:58:00.053 «,» 34466.207676 «,» 0.000000 « » 02.06.2020 21: 58: 01.055 «,» 13841.420713 «,» 0.000000 « » 02.06.2020 21: 58: 02.059 «,» 6039.413770 » , «0.000000» «02.06.2020 21: 58: 03.062», «6070.615071», «0.000000» «02.06.2020 21: 58: 04.066», «6891.797387», «0.000000» «02.06.2020 21: 58: 05.068», «7167.699324», «0.000000» «06.02.2020 21: 58: 06.071», «27653.817318», «0.000000» |
Get-Counter
, но я предпочел использовать Get-Counter для обеспечения производительности сетевых карт.
PS D: \> получить счетчик
Счетчик отметок времени
——— —————
02.06.2020 21:59:09 \\ MYWS \ сетевой интерфейс (контроллер семейства realtek pcie gbe) \ всего байтов / сек:
10496.1209792292
\\ MYWS \ сетевой интерфейс (настольный адаптер intel [r] pro_1000 mt) \ всего байт / сек:
0
\\ MYWS \ сетевой интерфейс (псевдо-интерфейс туннелирования teredo) \ всего байт / сек:
0
\\ MYWS \ processor (_total) \% процессорного времени:
5,62432829480601
\\ MYWS \ memory \% используемых байтов:
79.194275727308
\\ MYWS \ memory \ cache faults / sec:
0,998679446168332
\\ MYWS \ physicaldisk (_total) \% дискового времени:
0
\\ MYWS \ physicaldisk (_total) \ текущая длина очереди диска:
0
1 2 3 4 5 6 7 8 9 10 11 12 13 140002 18 19 20 21 22 23 24 25 26 27 | PS D: \> get-counter Timestamp CounterSamples ——— ————— 6/02/2020 9: 59:09 \\ MYWS \ сетевой интерфейс (контроллер семейства realtek pcie gbe) \ всего байт / сек: 10496.1209792292 \\ MYWS \ сетевой интерфейс (настольный адаптер Intel [r] pro_1000 mt) \ всего байтов / сек: 0 \\ MYWS \ сетевой интерфейс (псевдо-интерфейс туннелирования teredo) \ всего байтов / сек: 0 \\ MYWS \ processor (_total) \% процессорного времени: 5.62432829480601 \\ MYWS \ memory \% используемых байтов: 79.1942757302 79.1942757308 \ MYWS \ memory \ cache faults / sec: 0.998679446168332 \\ MYWS \ physicaldisk (_total) \% времени на диске: 0 \\ MYWS \ physicaldisk (_total) \ текущая длина очереди диска: 0 |
Я расширил значение, чтобы получить более подробную информацию
PS D: \> (get-counter) .countersamples
Путь InstanceName CookedValue
—- ———— ————
\\ MYWS \ сетевой интерфейс (контроллер семейства realtek pcie gbe) \ всего байтов / сек контроллер семейства realtek pcie gbe 8555.78302677938
\\ MYWS \ сетевой интерфейс (настольный адаптер intel [r] pro_1000 mt) \ всего байтов / сек Intel [r] pro_1000 mt настольный адаптер 0
\\ MYWS \ processor (_total) \% процессорного времени _total 4.564201864
\\ MYWS \ memory \% используемых байтов 79.2048703132209
\\ MYWS \ память \ сбоев кеша / сек 0,997875323860436
\\ MYWS \ physicaldisk (_total) \% времени на диске _total 0,0537194780225807
\\ MYWS \ physicaldisk (_total) \ текущая длина очереди диска _total 0
PS D: \> (получить-счетчик).countersamples Путь InstanceName CookedValue —- ———— ———— \\ MYWS \ сетевой интерфейс (семейство realtek pcie gbe контроллер) \ всего байтов / сек контроллер семейства realtek pcie gbe 8555.78302677938 \\ MYWS \ сетевой интерфейс (настольный адаптер Intel [r] pro_1000 mt) \ всего байтов / сек Intel [r] pro_1000 mt настольный адаптер 0 \ MYWS \ processor (_total) \% процессорного времени _total 4.564201864 \\ MYWS \ memory \% использованных подтвержденных байтов 79.2048703132209 \\ MYWS \ память \ сбоев кеша / сек 0,997875323860436 \\ MYWS \ physicaldisk (_total) \% времени на диске _total 0,0537194780225807 \\ MYWS \ physicaldisk (_total длина 9000) _ до текущего диска 0 |
На моей рабочей станции у меня есть 2 сетевых интерфейса, но с точки зрения любой виртуальной машины на MS Hyper-V, которую я хотел контролировать, NIC всегда будет называться «сетевой адаптер microsoft hyper-v».
Затем я последовал практике создания пользовательской проверки и макроса в Nagios, где состояние ОК / ПРЕДУПРЕЖДЕНИЕ / КРИТИЧЕСКОЕ определяется значением выхода (0,1,2), а сообщение — это результат выполнения команды. .
Скрипт Powershell
Это действительно базовый сценарий, который можно модифицировать, чтобы принимать в качестве параметров производителя сетевой карты, предупреждения и критические пороговые значения, но в моем простом случае он не требовался и упростил чтение и понимание сценария в этой статье.
# Проверка нагрузки сетевой карты Nagios / NSCP
# Автор: Паоло Фриго, https://www.scriptinglibrary.com
$ NETWORK_CARD = «сетевой адаптер Microsoft Hyper-V *»
$ WARNING = 29
$ CRITICAL = 49
$ TransferRate = ((получить-счетчик).контрпримеры | где-объект {$ _. instancename -like «$ NETWORK_CARD»} | выберите объект -exp CookedValue) * 8
$ NetworkUtilisation = [математика] :: round ($ TransferRate / 1000000000 * 100,2)
if ($ NetworkUtilisation -gt $ CRITICAL) {
Запись-вывод «КРИТИЧЕСКИЙ: $ ($ NetworkUtilisation)% Использование сети, $ ($ TransferRate.ToString (‘N0’)) б / с»
выход 2
}
if ($ NetworkUtilisation -gt $ WARNING) {
Запись-вывод «ПРЕДУПРЕЖДЕНИЕ: $ ($ NetworkUtilisation)% Использование сети, $ ($ TransferRate.ToString (‘N0’)) б / с »
выход 1
}
Запись-вывод «OK: $ ($ NetworkUtilisation)% Использование сети, $ ($ TransferRate.ToString (‘N0’)) b / s»
выход 0
1 2 3 4 5 6 7 8 9 10 11 12 13 140002 18 19 20 21 | # Проверка нагрузки сетевой карты Nagios / NSCP # Автор: Паоло Фриго, https: // www.scriptinglibrary.com $ NETWORK_CARD = «сетевой адаптер Microsoft Hyper-V *» $ WARNING = 29 $ CRITICAL = 49 $ TransferRate = ((get-counter) .countersamples | where-object {$ _. instancename -like «$ NETWORK_CARD»} | select-object -exp CookedValue) * 8 $ NetworkUtilisation = [math] :: round ($ TransferRate / 1000000000 * 100,2) если ($ NetworkUtilisation -gt $ CRITICAL) { Запись-вывод «CRITICAL: $ ($ NetworkUtilisation)% Использование сети, $ ($ TransferRate.ToString (‘N0’)) b / s « exit 2 } if ($ NetworkUtilisation -gt $ WARNING) { Write-Output» ПРЕДУПРЕЖДЕНИЕ: $ ($ NetworkUtilisation)% Использование сети, $ ($ TransferRate.ToString (‘N0’)) b / s « exit 1 } Write-Output» OK: $ ($ NetworkUtilisation)% Использование сети, $ ($ TransferRate.ToString (‘N0’)) b / с « выход 0 |
В зависимости от вашего варианта использования он может быть полезен сам по себе, даже без инструмента мониторинга, такого как Nagios.Это будет вывод:
PS C: \ Program Files \ NSClient ++ \ scripts>. \ Check-nic.ps1
Нормально: 0% Использование сети, 28 196 бит / с
PS C: \ Program Files \ NSClient ++ \ scripts>. \ Check-nic.ps1 OK: 0% Использование сети, 28 196 бит / с |
Я добавил процентное значение и скорость передачи в битах в секунду с разделителями, чтобы облегчить чтение.
Я развернул сценарий в папке сценариев (обычно C: \ Program Files \ NSClient ++ \ scripts ) и добавил его в nsclient.ini и перезапустил службу nscp.
[/ настройки / внешние скрипты / скрипты]
; Проверьте использование Nic
check_nic = cmd / c эхо-скрипты \\ check-nic.ps1; выход ($ LastExitCode) | powershell.exe -команда —
[/ настройки / внешние скрипты / скрипты] ; Проверка использования Nic check_nic = эхо-скрипты cmd / c \\ check-nic.ps1; выход ($ LastExitCode) | powershell.exe -команда — |
На моих серверах Nagios я создал проверку nrpe для целевых серверов с помощью новой настраиваемой команды check_nic.
Скрипт powershell, как обычно, доступен в репозитории GitHub. Удачного сетевого мониторинга!
Исправление ошибок
После публикации этой статьи я обнаружил в документации Nagios, что ошибался. Агент через check_nt предлагает готовый доступ к счетчикам производительности, поэтому нет необходимости иметь сценарий Powershell для выполнения этих типов проверок, поэтому вы можете определить макрос, аналогичный этому примеру.
check_nt -H IP_ADDRESS_OR_FQDN -p 12489 -v COUNTER -l «\ Сетевой интерфейс (сетевой адаптер Microsoft Hyper-v) \ Всего байт / сек» -w 3000 -c 4900
check_nt -H IP_ADDRESS_OR_FQDN -p 12489 -v COUNTER -l «\ Сетевой интерфейс (сетевой адаптер Microsoft Hyper-v) \ Всего байт / сек» -w 3000 -c 4900 |
Связанные
Настройка параметров сетевого адаптера с помощью PowerShell: IP-адрес, DNS, шлюз по умолчанию, статические маршруты
В этой статье мы покажем вам, как настроить параметры сетевого адаптера в Windows через PowerShell.Мы узнаем, как получить и установить статический IP-адрес и DNS (серверы имен), настроить сетевой интерфейс для получения конфигурации IP от DHCP-сервера. Вы можете использовать эти командлеты для настройки сети в версиях Core / Nano Windows Server, в Hyper-V Server, для изменения настроек IP на удаленных компьютерах / серверах и в ваших сценариях PS.
Ранее для настройки сетевых параметров Windows из интерфейса командной строки использовалась команда netsh interface ipv4
. В PowerShell 3.0 и новее, вы можете использовать встроенный модуль PowerShell NetTCPIP для управления настройками сети Windows.
Чтобы получить список командлетов в этом модуле, выполните следующую команду:
команда get -module NetTCPIP
Этот модуль также включает командлет Test-NetConnection, который можно использовать для проверки доступности порта TCP на удаленных компьютерах.
Управление сетевыми адаптерами с помощью PowerShell
Показать список доступных сетевых интерфейсов на компьютере:
Get-NetAdapter
Командлет возвращает имя интерфейса, его состояние (вверх / вниз), MAC-адрес и скорость порта.
В этом примере у меня есть несколько сетевых адаптеров на моем компьютере (помимо физического подключения, Ethernet0, , у меня есть несколько сетевых интерфейсов Hyper-V и VMWare Player).
Вы можете ссылаться на сетевые интерфейсы по их именам или индексам (столбец Индекс ). В нашем примере, чтобы выбрать физический сетевой адаптер Intel 82574L, используйте команду:
Get-NetAdapter -Name "Ethernet0"
или:
Get-NetAdapter -InterfaceIndex 8
Имя адаптера можно изменить:
Rename-NetAdapter -Name Ethernet0 -NewName LAN
Чтобы отключить сетевой интерфейс, используйте эту команду:
Get-NetAdapter -InterfaceIndex 13 | Отключить-NetAdapter
Когда вы включаете интерфейс, вы не можете использовать его индекс, так как он еще не назначен.Вы можете указать название адаптера или описание:
Enable-NetAdapter -InterfaceDescription «Hyper-V Virtual Ethernet Adapter»
Если для адаптера указана VLAN, вы можете отобразить его следующим образом:
Get-NetAdapter | ft Имя, статус, скорость соединения, VlanID
Вот как вы можете получить информацию об используемом драйвере сетевого адаптера:
Get-NetAdapter | ft Имя, Имя драйвера, Версия драйвера, Информация о драйвере, Имя файла драйвера
Информация о физических сетевых адаптерах (слот PCI, шина и т. Д.):
Get-NetAdapterHardwareInfo
Как просмотреть настройки сетевого адаптера TCP / IP с помощью PowerShell?
Чтобы получить текущие настройки сетевого адаптера (IP-адрес, DNS, шлюз по умолчанию):
Get-NetIPConfiguration -InterfaceAlias Ethernet0
Чтобы отобразить подробную информацию о текущей конфигурации TCP / IP сетевого адаптера, используйте эту команду:
Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed
В этом случае назначенный сетевой профиль (NetProfile.NetworkCategory) интерфейса, отображаются настройки MTU (NetIPv4Interface.NlMTU), включено ли получение IP-адреса от DHCP (NetIPv4Interface.DHCP) и другая полезная информация.
Чтобы получить только IPv4-адрес интерфейса:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress) .IPv4Address
Использование PowerShell для установки статического IP-адреса
Давайте попробуем установить статический IP-адрес для сетевой карты. Чтобы изменить IP-адрес, маску подсети и шлюз по умолчанию для сетевого интерфейса, используйте:
New-NetIPAddress –IPAddress 192.168.2.50 -Шлюз по умолчанию 192.168.2.1 -PrefixLength 24 -Index 8
Вы можете установить IP-адрес, используя структуру массива (более наглядно):
$ ipParams = @ {
InterfaceIndex = 8
IPAddress = "192.168.2.50"
PrefixLength = 24
AddressFamily = "IPv4"
}
New-NetIPAddress @ipParams
Если статический IP-адрес уже был настроен и вы хотите его изменить, используется командлет Set-NetIPAddress :
Set-NetIPAddress -InterfaceIndex 8 -IPAddress 192.168.2.90
Чтобы отключить получение IP-адреса от DHCP для вашего адаптера, выполните команду:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled
Для просмотра таблицы маршрутизации используется командлет Get-NetRoute. Чтобы добавить новый маршрут, используйте командлет New-NetRoute :
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.2.2" -InterfaceIndex 8
Чтобы отключить протокол IPv6 для сетевого адаптера:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled: $ false -ComponentID ms_tcpip6
Set-DnsClientServerAddress: установка адресов первичного и вторичного DNS-серверов
Чтобы установить IP-адреса первичного и вторичного DNS-серверов в Windows, используйте командлет Set-DNSClientServerAddress .Например:
Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.2.11,10.1.2.11
Вы также можете установить серверы имен, используя массив:
$ dnsParams = @ {
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8", "8.8.4.4")
}
Set-DnsClientServerAddress @dnsParams
После изменения настроек DNS вы можете очистить кеш резолвера:
Clear-DnsClientCache
Как изменить статический IP-адрес на DHCP с помощью PowerShell?
Чтобы компьютер мог получить динамический IP-адрес от DHCP-сервера для сетевого адаптера, выполните следующую команду:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled
Очистить настройки DNS-сервера:
Set-DnsClientServerAddress –InterfaceIndex 8 -ResetServerAddresses
И перезапустите адаптер, чтобы автоматически получить IP-адрес от DHCP-сервера:
Restart-NetAdapter -InterfaceAlias Ethernet0
Если ранее у вас был настроен шлюз по умолчанию, удалите его:
Set-NetIPInterface -InterfaceAlias Ethernet0 | Remove-NetRoute -Confirm: $ false
Как удаленно изменить IP-адрес и настройки DNS с помощью PowerShell?
PowerShell можно использовать для удаленного изменения IP-адреса или настроек DNS-сервера на нескольких удаленных компьютерах.Предположим, ваша задача — изменить настройки DNS для всех серверов в конкретном контейнере AD (Organizational Unit). Чтобы получить список компьютеров в приведенном ниже сценарии, используется командлет Get-ADComputer, а для удаленного подключения к компьютерам используется WinRM (командлет Invoke-Command):
$ Servers = Get-ADComputer -SearchBase ‘OU = Servers, OU = Berlin, OU = DE, DC = woshub, DC = cpm’ -Filter '(Операционная система - как "Windows Server *")' | Имя объекта сортировки
ForEach ($ Server в $ Servers) {
Write-Host "Server $ ($ Server.Name) "
Invoke-Command -ComputerName $ Server.Name -ScriptBlock {
$ NewDnsServerSearchOrder =" 192.168.2.11 "," 8.8.8.8 "
$ Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Где-Object {$ _. DHCPEnabled -ne 'True' -and $ _. DNSServerSearchOrder -ne $ null}
Write-Host "Старые настройки DNS:"
$ Adapters | ForEach-Object {$ _. DNSServerSearchOrder}
$ Adapters | ForEach-Object {$ _. SetDNSServerSearchOrder ( $ NewDnsServerSearchOrder)} | Out-Null
$ Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$ _.DHCPEnabled -ne 'True' -and $ _. DNSServerSearchOrder -ne $ null}
Write-Host "Новые настройки DNS:"
$ Адаптеры | ForEach-Object {$ _. DNSServerSearchOrder}
}
}
Шпаргалка по командам Windows PowerShell
(PDF), советы и списки
Когда дело доходит до запуска команд в Windows, PowerShell стал своего рода козырем в дыре. В течение многих лет энтузиасты были ограничены командной строкой Windows, но в 2006 году PowerShell появился как мощная альтернатива.
В этом посте мы рассматриваем:
Что такое Windows PowerShell?
PowerShell — это интерактивный интерфейс командной строки ( CLI ) и механизм автоматизации, разработанный Microsoft для помощи в проектировании конфигураций системы и автоматизации административных задач.
Этот инструмент имеет собственную командную строку с уникальным языком программирования, подобным Perl. Изначально PowerShell был разработан для управления объектами на компьютерах пользователей.
Сегодня PowerShell предлагает пользователям обширную среду, в которой они могут выполнять и автоматизировать задачи управления системой. Пользователь может получить доступ к ресурсам из Active Directory на сервер Exchange через одну программу. По своей сути PowerShell позволяет пользователю получить доступ:
- Командная строка
- Команды PowerShell
- API .NET Framework
- Инструментарий управления Windows
- Модель компонентных объектов Windows
Поскольку PowerShell стала приложением с открытым исходным кодом, пользователи Linux и Unix теперь могут получить доступ к этой универсальной платформе.PowerShell в основном используется, чтобы помочь пользователям автоматизировать административную работу. Вместо того чтобы выполнять утомительные и повторяющиеся задачи, пользователь может просто создавать сценарии и выдавать команды, а PowerShell выполнит их автоматически. Пользователь может настроить сотни команд, называемых командлетами .
Список команд PowerShell
Вот 25 основных команд PowerShell:
Имя команды | Псевдоним | Описание |
---|---|---|
Set-Location | cd, chdir, sl | Устанавливает текущее рабочее место в указанное место. |
Get-Content | cat, gc, type | Получает содержимое элемента в указанном месте. |
Add-Content | ac | Добавляет содержимое к указанным элементам, например добавляет слова в файл. |
Set-Content | sc | Записывает или заменяет содержимое элемента новым содержимым. |
Copy-Item | copy, cp, cpi | Копирует элемент из одного места в другое. |
Remove-Item | del, erase, rd, ri, rm, rmdir | Удаляет указанные элементы. |
Move-Item | mi, move, mv | Перемещает элемент из одного места в другое. |
Set-Item | si | Изменяет значение элемента на значение, указанное в команде. |
New-Item | ni | Создает новый элемент. |
Start-Job | sajb | Запускает фоновое задание Windows PowerShell. |
Compare-Object | compare, dif | Сравнивает два набора объектов. |
Group-Object | group | Группирует объекты, которые содержат одинаковое значение для указанных свойств. |
Invoke-WebRequest | curl, iwr, wget | Получает содержимое с веб-страницы в Интернете. |
Measure-Object | measure | Вычисляет числовые свойства объектов, а также символы, слова и строки в строковых объектах, таких как файлы… |
Resolve-Path | rvpa | Разрешает символы подстановки в пути и отображает содержимое пути. |
Resume-Job | rujb | Перезапускает приостановленное задание |
Set-Variable | set, sv | Устанавливает значение переменной. Создает переменную, если переменная с запрошенным именем не существует. |
Show-Command | shcm | Создает команды Windows PowerShell в графическом командном окне. |
Sort-Object | sort | Сортировка объектов по значениям свойств. |
Start-Service | sasv | Запускает одну или несколько остановленных служб. |
Start-Process | saps, start | Запускает один или несколько процессов на локальном компьютере. |
Suspend-Job | sujb | Временно останавливает задания рабочего процесса. |
Wait-Job | wjb | Подавляет командную строку до тех пор, пока одно или все фоновые задания Windows PowerShell, запущенные в сеансе, не станут… |
Where-Object | ?, Где | Выбирает объекты из коллекции на основе значений их свойств. |
Запись-вывод | эхо, запись | Отправляет указанные объекты следующей команде в конвейере. Если команда является последней командой в конвейере,… |
Шпаргалка по PowerShell (PDF)
Вот наша PDF-версия шпаргалки по PowerShell. Нажмите на изображение ниже, чтобы открыть PDF-файл на отдельной вкладке браузера, которую вы можете сохранить и использовать в качестве краткого справочника.
Как использовать Windows PowerShell
PowerShell идеально подходит для корпоративных администраторов, которые выполняют сложные операции управления в крупных корпоративных сетях.Вместо того, чтобы вручную собирать информацию о сотнях различных серверов и служб (что заняло бы много времени), вы можете просто запустить скрипт в PowerShell, чтобы автоматически возвращать вам информацию.
Вообще говоря, PowerShell наиболее полезен для пользователей, у которых есть опыт работы с командными строками. Чтобы использовать PowerShell, вы можете запускать различные командлеты, сценарии, исполняемые файлы и классы .NET. В этой статье мы в основном сосредоточимся на командлетах и скриптах, которые помогут вам разобраться в основах.
Udemy предлагает несколько курсов по PowerShell с самым высоким рейтингом, которые могут оказаться полезными.
PowerShell против командной строки
Для многих пользователей PowerShell — лучшая альтернатива командной строке. Причина в том, что у него просто больше лошадиных сил. Одно из самых больших отличий заключается в том, что PowerShell использует командлеты, а не команды. Командлеты делают управление реестром и инструментарий управления Windows доступным для администраторов. Напротив, командная строка ограничена гораздо более простыми командами.
Существует некоторое пересечение синтаксиса между двумя платформами, поскольку PowerShell принимает некоторые команды командной строки, такие как ipconfigtocd
. Однако они известны как псевдонимы, а не командлеты. Еще одно ключевое отличие состоит в том, что PowerShell ориентирован на объекты. Каждый фрагмент данных, выводимых командлетом, представляет собой объект, а не текст. Это упрощает пользователю навигацию по сложным данным. Включение платформы .NET также позволяет использовать сценарии PowerShell.NET-интерфейсы. Короче говоря, PowerShell — это командная строка на стероидах.
Загрузка PowerShell
Прежде чем мы углубимся в основы использования PowerShell, сначала необходимо получить доступ к основному интерфейсу. Если вы являетесь пользователем Windows 10, то у вас уже будет доступ к PowerShell 5. Пользователи Windows 8-8.1 имеют доступ к PowerShell 4, но если вы используете Windows 7, вам нужно будет установить его в .NET. рамки. Во всех операционных системах PowerShell предлагает два разных интерфейса.
Более продвинутой является Интегрированная среда сценариев, которая действует как всеобъемлющий графический интерфейс для опытных пользователей. Основной альтернативой является консоль PowerShell, которая предоставляет пользователю командную строку для ввода своих команд. Новичкам рекомендуется придерживаться последнего, пока они не изучат основы PowerShell.
Чтобы запустить PowerShell в Windows 10, вам необходимо быть администратором. Войдите в систему как администратор, нажмите Пуск и пролистайте свои приложения, пока не найдете Windows PowerShell .Щелкните правой кнопкой мыши и выберите Запуск от имени администратора . В Windows 8.1 просто найдите PowerShell в папке System . Точно так же в Windows 7 каталогом по умолчанию для PowerShell является папка Accessories после установки программы.
Как запускать командлеты
Вкратце, командлет — это однофункциональная команда. Вы вводите командлеты в командную строку так же, как при использовании традиционных команд или служебных программ.Командлеты — это основной способ взаимодействия с CLI.
В PowerShell большинство командлетов написано на C # и состоит из инструкций, предназначенных для выполнения функции, возвращающей объект .NET.
В PowerShell можно использовать более 200 командлетов. В командной строке Windows PowerShell регистр не учитывается, поэтому эти команды можно вводить как в верхнем, так и в нижнем регистре. Основные командлеты перечислены ниже:
- Get-Location — Получить текущий каталог
- Set-Location — Получить текущий каталог
- Move-item — Переместить файл в новое место
- Copy-item — Копирование файла в новое место
- Переименовать — пункт Переименовать существующий файл
- Новый элемент — Создать новый файл
Для получения полного списка доступных вам команд используйте командлет Get-Command
.В командной строке вы должны ввести следующее:
PS C: \> Get-Command
Важно отметить, что Microsoft запрещает пользователям использовать настраиваемые командлеты PowerShell в своих настройках по умолчанию. Чтобы использовать командлеты PowerShell, вам необходимо изменить ExecutionPolicy с Restricted на RemoteSigned . Remote Signed позволит вам запускать свои собственные сценарии, но остановит неподписанные сценарии от других пользователей.
Чтобы изменить политику выполнения, введите следующую команду PowerShell:
PS C: \> Set-ExecutionPolicy
Чтобы перейти на RemoteSigned , введите следующую команду:
PS C: \> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Убедитесь, что вы используете учетную запись администратора, чтобы у вас было разрешение на установку новой политики выполнения.
Как запускать сценарии PowerShell
Процессы и команды на основе сценариев являются частью основы универсальности PowerShell. В PowerShell сценарий представляет собой текстовый файл с расширением ps1 в имени файла. Чтобы создать новый скрипт, вы можете просто открыть блокнот Windows, ввести свои команды и сохранить с «.ps1» в конце имени.
Чтобы запустить сценарий, введите его папку и имя файла в окно PowerShell:
PS c: \ powershell \ mynewscript.пс1
Как только вы это сделаете, будет запущен выбранный вами сценарий.
Хотите создать свои собственные сценарии PowerShell? Почти 5 тысяч студентов прошли курс Udemy по расширенному написанию сценариев с помощью PowerShell.
Перекрытие с командами Windows
Когда вы новичок в PowerShell, может показаться сложным пытаться изучить совершенно новую библиотеку команд. Однако большинство новых пользователей не осознают, что синтаксис, используемый в командной строке Windows, частично совпадает с синтаксисом PowerShell.Это упрощается тем, что PowerShell не чувствителен к регистру.
Как и в командной строке, в PowerShell команда cd по-прежнему изменяет каталоги, а dir по-прежнему предоставляет список файлов в выбранной папке. Поэтому важно помнить, что не обязательно начинать с нуля. Принятие этого во внимание поможет уменьшить кривую обучения, с которой вы сталкиваетесь при использовании PowerShell, и уменьшит количество новых команд, которые вам нужно выучить.
При этом важно отметить, что они не столько считаются полными командами PowerShell, сколько псевдонимами (имя Powershell для команд командной строки Windows).Поэтому, хотя вы можете попробовать некоторые команды командной строки в PowerShell, вам следует узнать как можно больше о новых. Тем не менее, опыт командной строки может определенно помочь новым пользователям освоить PowerShell и сразу же приступить к работе.
Резервное копирование базы данных SQL с помощью PowerShell
Многие люди используют PowerShell для резервного копирования баз данных SQL. Интерфейс командной строки может выполнять полное резервное копирование базы данных, резервное копирование файлов и резервное копирование журналов транзакций.Существует множество способов резервного копирования базы данных в PowerShell, но один из самых простых — использовать команду Backup-SqlDatabase
. Например:
PS C: \> Backup-SqlDatabase -ServerINstance «Компьютер \ Экземпляр» -База данных «Databasecentral»
Будет создана резервная копия базы данных с именем «Databasecentral» (или именем выбранной вами базы данных ».
Для резервного копирования журнала транзакций введите:
PS C: \> Backup-SqlDatabase -ServerInstance «Компьютер \ Экземпляр» -База данных «Databasecentral» -BackupAction Log
Будет создан журнал транзакций выбранной базы данных.
Основные команды PowerShell
Использование псевдонимов поможет вам только в PowerShell, поэтому важно изучить все, что можно, о встроенных командах PowerShell. Мы коснулись некоторых из них выше, но ниже мы разберем основные более подробно.
Get-Help
Эта команда должна стоять в самом верху списка любого нового пользователя, когда дело касается PowerShell. Команду Get-Help можно использовать буквально для получения справки по любой другой команде PowerShell.Например, если вы знаете имя команды, но не знаете, что она делает и как ее использовать, команда Get-Help предоставляет полный синтаксис команды.
Например, если вы хотите увидеть, как работает Get-Process, вы должны ввести:
PS C: \> Get-Help -Name Get-Process
PS C: \> Set-ExecutionPolicy
Как упоминалось ранее в этом руководстве, Microsoft имеет ограниченную политику выполнения, которая предотвращает создание сценариев в PowerShell, если вы ее не измените.При настройке политики выполнения у вас есть четыре варианта на выбор:
- Restricted — Политика выполнения по умолчанию, которая останавливает выполнение сценариев.
- All Signed — будет запускать сценарии, если они подписаны доверенным издателем
- Remote Signed — разрешает запуск сценариев, которые были созданы локально
- Unrestricted — Политика без ограничений на запуск скриптов
PS C: \> Get-ExecutionPolicy
Если вы используете PowerShell, вы не всегда можете работать на сервере, с которым вы знакомы.Выполнение команды Get-Execution Policy позволит вам увидеть, какая политика активна на сервере, перед запуском нового сценария. Если после этого вы увидите, что рассматриваемый сервер работает в рамках ограниченной политики, вы можете реализовать команду Set-ExecutionPolicy , чтобы изменить ее.
Get-Service
Одной из наиболее важных команд является команда Get-Service
, которая предоставляет пользователю список всех служб, установленных в системе, как работающих, так и остановленных.Этим командлетом можно управлять, используя определенные имена служб или объекты.
Например, если вы наберете PS C: \> Get-Service
, вам будет показан список всех служб на вашем компьютере, их статусы и отображаемые имена.
Чтобы использовать эту команду для получения определенных служб, введите: PS C: \ Get-Service «WMI *»
, чтобы получить все службы, которые начинаются с WMI.
Если вы хотите ограничить вывод активными службами на вашем компьютере, введите следующую команду:
PS C: \ Get-Service | Где-Объект {$ _.Status -eq «Выполняется»}
ConvertTo-HTML
При использовании PowerShell вы можете создать отчет об информации, которую вы видели. Один из лучших способов сделать это — использовать команду ConvertTo-HTML . Этот командлет позволяет создавать отчеты с таблицами и цветом, которые могут помочь визуализировать сложные данные. Просто выберите объект и добавьте его в команду. Например, вы можете ввести:
Get-PSDrive | ConvertTo-Html
Это возвращает массу информации, поэтому рекомендуется ограничить ее файлом с помощью команды Out-File.Лучшая альтернативная команда:
Диск Get-PSD | ConvertTo-Html | Исходящий файл -FilePath PSDrives.html
После этого будет сгенерирован HTML-файл в табличной форме. Например:
Затем вы можете добавить свои собственные цвета и границы, чтобы улучшить его представление.
Экспорт-CSV (и Get-Service)
Не менее важна для повышения наглядности команда Export-CSV. Он позволяет экспортировать данные PowerShell в файл CSV. По сути, эта команда создает файл CSV, в котором компилируются все объекты, выбранные в PowerShell.Каждый объект имеет свою собственную строку или строку в файле CSV. Эта команда в основном используется для создания электронных таблиц и обмена данными с внешними программами.
Чтобы использовать эту команду, введите:
PS C: \> Get-Service | Export-CSV c: \ service.csv
Важно помнить, что нельзя форматировать объекты перед запуском команды Export-CSV. Это связано с тем, что в результате форматирования объектов в CSV-файл помещаются только отформатированные свойства, а не сами исходные объекты.Если вы хотите отправить определенные свойства объекта в файл CSV, вы должны использовать командлет Select-Object .
Чтобы использовать командлет Select-Object , введите:
PS C: \> Get-Service | Выбрать имя объекта, статус | Export-CSV c: \ Service.csv
Get-Process
Если вы хотите просмотреть все процессы, запущенные в настоящее время в вашей системе, очень важна команда Get-Process . Чтобы получить список всех активных процессов на вашем компьютере, введите:
PS C: \ Get-Process
Обратите внимание: если вы не укажете никаких параметров, вы получите подробную информацию по каждому активному процессу на вашем компьютере.Чтобы выбрать конкретный процесс, сузьте результаты по имени процесса или идентификатору процесса и объедините его с командлетом Format-List , который отображает все доступные свойства. Например:
PS C: \ Get-Process windowrd, explorer | Список форматов *
Это дает вам полный контроль над всеми активными процессами.
Get-EventLog
Если вы когда-нибудь захотите получить доступ к журналам событий вашего компьютера (или журналам на удаленных компьютерах) во время использования PowerShell, вам понадобится команда Get-EventLog .Этот командлет работает только с классическими журналами событий, поэтому вам понадобится команда Get-WinEvent для журналов более поздних версий, чем Windows Vista.
Чтобы запустить команду журнала событий, введите:
PS C: \> Get-EventLog -List
Это покажет все журналы событий на вашем компьютере.
Одна из наиболее частых причин, по которой пользователи просматривают журналы событий, — это обнаруживать ошибки. Если вы хотите видеть в журнале сообщения об ошибках, просто введите:
.
PS C: \> Get-EventLog -LogName System -EntryType Ошибка
Если вы хотите получать журналы событий с нескольких компьютеров, укажите, какие устройства вы хотите просматривать (перечисленные ниже как «Server1» и «Server2»).Например:
PS C: \> Get-EventLog - LogName «Windows PowerShell» -ComputerName «локальный компьютер», «Server1», «Server2».
Параметры, которые можно использовать для поиска в журналах событий, включают:
- После — пользователь указывает дату и время, и командлет найдет события, произошедшие после
- AsBaseObject — Предоставляет System.Diagnostics.EventLogEntry для каждого события
- AsString — Возвращает вывод в виде строк
- До — пользователь указывает дату и время, и командлет найдет события, которые произошли до
- ComputerName — используется для обозначения удаленного компьютера
- EntryType — Определяет тип записи событий (ошибка, аудит отказов, аудит успехов, информация, предупреждение)
- Индекс — указывает значения индекса, которые командлет находит события из
- Список — Предоставляет список журналов событий
- UserName — Задает имена пользователей, связанные с данным событием
.
.
Остановить процесс
При использовании PowerShell нередко возникают зависания процесса.Когда это происходит, вы можете использовать Get-Process для получения имени процесса, испытывающего трудности, а затем остановить его с помощью команды Stop-Process . Как правило, вы завершаете процесс по его имени. Например:
PS C: \> Stop-Process - имя «блокнот»
В этом примере пользователь завершил работу с Блокнотом с помощью команды Stop-Process
.
PowerShell: мощный интерфейс командной строки
Хотя переход на PowerShell может показаться довольно сложным, его интерфейс командной строки работает почти так же, как и любой другой.У него могут быть собственные уникальные командлеты, но множество онлайн-ресурсов могут помочь вам с любой административной задачей, о которой вы только можете подумать. Чтобы получить максимальную отдачу от PowerShell, вам просто нужно привыкнуть к множеству доступных вам команд.
Нового пользователя легко испугать более 200 командлетов PowerShell. Убедитесь, что вы начали с интерфейса командной строки, прежде чем перейти к полноценному графическому интерфейсу. Независимо от того, являетесь ли вы новичком в PowerShell или интерфейсах командной строки, в Интернете доступно более чем достаточно информации, которая поможет вам максимально эффективно использовать этот мощный инструмент.
Часто задаваемые вопросы о командах PowerShell
Как перемещаться в Windows PowerShell?
Наиболее важные действия по навигации, которые вам нужно знать для PowerShell, — это как войти в нее и как снова выйти. Самый простой способ получить доступ к среде PowerShell — ввести PowerShell в поле поиска на панели задач. PowerShell работает в собственном окне, поэтому вы можете закрыть его, просто щелкнув значок X в правом верхнем углу рамки окна.Правильный способ закрыть окно — набрать , выйти из и открыть командную строку. Стандартные команды навигации командной строки работают в PowerShell, поэтому используйте cd для изменения каталога. Введите букву диска, а затем двоеточие (например, D: ), чтобы переключиться на другой диск.
Windows PowerShell — это то же самое, что и командная строка?
PowerShell является усовершенствованием командной строки, поскольку ее возможности создания сценариев оболочки включают более совершенные программные конструкции, чем те, которые доступны для пакетных заданий в командной строке.Все команды командной строки доступны в PowerShell, но в PowerShell есть дополнительные команды и утилиты, называемые командлетами. Думайте о PowerShell как о командной строке +.
Как научиться писать сценарии на bash?
Сценарий Bash — это сценарий оболочки Unix. Поскольку Linux является адаптацией Unix, сценарий оболочки, написанный для Linux, часто называется сценарием Bash. Существует множество онлайн-руководств по созданию сценария Bash. Во избежание путаницы старайтесь не называть сценарий PowerShell сценарием Bash.
Параметры питания адаптера
— Руководство по работе с сетью Windows PowerShell
Начиная с Windows 7, [расширены параметры питания сетевого адаптера] (http://technet.microsoft.com/en-us/library/ee617165 (v = WS.10). aspx). Некоторые из улучшений перечислены здесь:
Wake on LAN и Wake on Wireless LAN. Улучшенные шаблоны пробуждения сокращают количество ложных пробуждений. Начиная с Windows 7, направленный пакет (например, пинг) не вызывает пробуждение компьютера.
Разгрузка ARP (протокол разрешения адресов) и NS (запрос соседей). Пакеты ARP и NS не выводят компьютер из спящего режима. Вместо этого сетевой адаптер, начиная с Windows 7, может ответить. Следовательно, компьютеру не нужно выходить из спящего режима только для того, чтобы оставаться в сети. Эта поддержка зависит как минимум от драйверов NDIS 6.0 и может быть недоступна на старом оборудовании.
Низкое энергопотребление при отключении носителя. Позволяет компьютеру переводить сетевой адаптер в состояние низкого энергопотребления, когда сетевой кабель отключен, а компьютер работает.
Эти параметры можно настроить через графический интерфейс пользователя, нажав кнопку настройки в диалоговом окне свойств сетевого адаптера. Настройки показаны на следующем рисунке.
image055.png
PowerTip : Получить настройки управления питанием сетевого адаптера
Вопрос: Вы хотите получить настройки управления питанием сетевого адаптера на вашем компьютере с Windows 8.1. Как для этого можно использовать Windows PowerShell?
Ответ: Используйте функцию Get-NetAdapterPowerManagement и укажите имя сетевого адаптера для запроса.
Get-NetAdapterPowerManagement-Name ethernet
Некоторые параметры управления питанием сетевого адаптера можно настроить через NetSh. Например, чтобы разрешить пакеты ARP и NS для пробуждения сетевого адаптера, я бы использовал следующую команду:
netsh interface ipv4 set interface 12 forcearpndwolpattern = enabled
Когда команда завершится успешно, она вернет OK . Имейте в виду, что это также вызовет сброс сетевого адаптера.Команда и соответствующие выходные данные отображаются здесь:
image057.png
Чтобы запросить параметры управления питанием для определенного сетевого адаптера, используйте функцию Get-NetAdapterPowerManagement и укажите имя сетевого адаптера. Пример команды показан здесь:
Get-NetAdapterPowerManagement -Name ethernet
Команда и выходные данные, связанные с командой, показаны на следующем рисунке.
image059.png
Функция Get-NetAdapterPowerManagement разрешает использование только имени адаптера или описания интерфейса в качестве параметров.Но функция Get-NetAdapter гораздо более гибкая. Я часто использую Get-NetAdapter для получения определенного сетевого адаптера, а затем по конвейеру для других функций, таких как Get-NetAdapterPowerManagement. Этот метод представлен здесь:
Get-NetAdapter -Interface Index4 | Get-NetAdapterPowerManagement
Для настройки управления питанием сетевого адаптера я использую функцию Set-NetAdapterPowerManagement. Еще раз, я хочу получить свой сетевой адаптер по порядковому номеру интерфейса, вместо того, чтобы вводить имя или описание адаптера.Я передаю полученный объект сетевого адаптера функции Set-NetAdapterPowerManagement и указываю значение для параметра -WakeOnMagicPacket. Команда появляется здесь.
Get-NetAdapter -Interface Index4 | Set-NetAdapterPowerManagement -WakeOnMagicPacket Enabled
Поскольку выходные данные команды не возвращаются, я использую команду Get-NetAdapter во второй раз, чтобы убедиться, что изменение конфигурации имело место. Команды и связанные с ними выходные данные показаны на следующем рисунке.
image061.png
Так получилось, что я знаю допустимые значения параметров. Но если бы я этого не знал, я мог бы создать команду в Windows PowerShell ISE и полагаться на функции intellisense. Когда я набираю имя параметра, отображаются допустимые значения, позволяющие выбрать правильное значение из списка. Это показано на следующем рисунке.
image063.png
В большинстве случаев, когда мне нужно управлять настройками управления питанием сетевого адаптера, это происходит из-за нового развертывания или из-за того, что аудит определил отклонение конфигурации.(Хммм — на самом деле было бы здорово использовать Управление желаемой конфигурацией для управления.) Итак, что я делаю, так это помещаю все параметры, которые я хочу настроить, в одну команду. Такая команда появляется здесь:
Set-NetAdapterPowerManagement -Name ethernet -ArpOffload Enabled -DeviceSleep OnDisconnect Disabled -NSOffload Enabled -WakeOnMagicPacket Enabled -WakeOnPattern Enabled -PassThru
это и убедиться, что меняются правильные вещи, которые я хотел изменить.Команда и выходные данные команды показаны на следующем рисунке:
image065.png
Чтобы внести изменения в несколько компьютеров, я сначала использую командлет New-CimSession для удаленных подключений. Я могу указать имена компьютеров и учетные данные, которые будут использоваться для подключения. Затем я сохраняю удаленное соединение в переменной. Затем я передаю эту cimsession параметру -cimsession. Ключевым моментом здесь является то, что я должен уметь идентифицировать сетевой адаптер, который мне нужно использовать для управления.Пример создания сеанса Cim и его использования отображается здесь (имейте в виду, что это двухстрочная команда. Если вы напрямую копируете и вставляете эту команду, вы должны изменить имя компьютера, имя сетевого интерфейса и удалить пробелы, пока не появится вторая команда. в одной строке).
$ session = New-CimSession -ComputerName edlt
Set-NetAdapterPowerManagement -CimSession $ session -name ethernet -ArpOffload Enabled -DeviceSleepOnDisconnect Disabled -NSOffload Enabled -WakeOnMagicPackdat 9 Команда 9 команды показаны на следующем рисунке.
image067.png
Имейте в виду, что для этих команд требуется, чтобы консоль Windows PowerShell или интегрированная среда сценариев Windows PowerShell открывались с правами администратора. Для этого щелкните правой кнопкой мыши значок консоли Windows PowerShell или значок Windows PowerShell ISE, удерживая нажатой клавишу Shift, и выберите «Запуск от имени администратора». Или, если вы запускаете его через Windows Search в Windows 8.1, введите Windows PowerShell на начальной странице, и появится диалоговое окно Search со значком Windows PowerShell.Щелкните правой кнопкой мыши значок и выберите «Запуск от имени администратора» в меню действий.
Если вы не запускаете Windows PowerShell с правами администратора, возникает ошибка о том, что не удается найти сетевой адаптер. Пример ошибки показан на следующем рисунке.
image069.png
3 причины, по которым вы должны научиться использовать PowerShell
Если ваша работа удаленно связана с корпоративными информационными технологиями (ИТ), вы, вероятно, слышали термин «PowerShell.«PowerShell, доступный в Microsoft Windows, представляет собой оболочку командной строки Windows, разработанную специально для системных администраторов. Хотя PowerShell может выглядеть похоже на приложение командной строки в Windows, это не просто способ ввода устаревших команд Microsoft DOS внутри графического интерфейса пользователя (GUI) Windows. PowerShell - это масштабируемый способ для корпоративных ИТ-менеджеров автоматизировать критически важные бизнес-задачи на каждом ПК с Windows в глобальной сети. Вот почему изучение команд PowerShell может дать вам навыки, необходимые для управления ИТ в любом бизнесе.
Легко получить доступ к PowerShell
Барьер для входа в изучение PowerShell относительно низкий из-за его почти повсеместного распространения. Если ваш компьютер работает под управлением Windows 10, вы можете ввести «PowerShell» в поле поиска, чтобы получить мгновенный доступ к приложению Windows PowerShell:
PowerShell включает интерактивную подсказку для ввода команд. Хотя большинство людей взаимодействуют со своими устройствами с помощью графического интерфейса пользователя, те же устройства также предлагают текстовый интерфейс для ввода команд, называемый «интерфейсом командной строки» (CLI).
PowerShell - это встроенный интерфейс командной строки для Microsoft Windows, используемый ИТ-администраторами и сотрудниками службы поддержки для:
- Автоматизировать резервные задачи
- Управление ИТ-средой в масштабе
- Доступ к труднодоступной информации о пользователях
Простая автоматизация
Windows PowerShell представляет концепцию командлета (произносится как «command-let»), простого однофункционального инструмента командной строки, встроенного в оболочку. Вы можете использовать каждый командлет по отдельности, но их сила реализуется, когда вы используете эти простые инструменты в сочетании для выполнения сложных задач.
Windows PowerShell включает более сотни основных командлетов ядра, и вы можете написать свои собственные командлеты и поделиться ими с другими пользователями. Знание того, как разрабатывать командлеты и выполнять сценарии PowerShell, является востребованным навыком для больших и малых компаний в Северной Америке и Европе. Недавний поиск по запросу «вакансии PowerShell» на Dice.com (веб-сайт по подбору персонала, ориентированный на вакансии с шестизначной зарплатой) дал почти 2000 открытых вакансий всего в 15 местах по всей территории Соединенных Штатов.
Масштабируемое управление
Мы знаем, что установка обновлений операционной системы на ПК занимает несколько кликов. Однако установка этих обновлений всего на дюжину ноутбуков и случайный настольный ПК в небольшом офисе может занять много времени. Представьте, сколько времени требуется для обновления 563 различных ПК в нескольких местах - без ущерба для общей производительности вашей рабочей силы.
Умные ИТ-администраторы используют PowerShell для создания сценария командлета для задачи, которую они должны выполнять более пары раз.Все, что вы можете сделать с помощью нескольких щелчков мыши в графическом интерфейсе, можно сделать быстрее в PowerShell.
Доступ к информации
Как и многие интерфейсы командной строки, PowerShell обеспечивает доступ к файловой системе на компьютере. Кроме того, поставщики PowerShell позволяют получить доступ к труднодоступным данным и информации. Например, ИТ-администраторы могут использовать PowerShell для легкого доступа к защищенным хранилищам данных, таким как реестр Windows и сертификаты цифровой подписи.
Это важно, потому что, в отличие от большинства интерфейсов командной строки, PowerShell построен на основе Microsoft.NET Framework. Это уникальная функция, которая позволяет ИТ-специалистам автоматизировать и удаленно выполнять специальные задачи на любом ПК с ОС Windows в корпоративной сети. Лучше всего то, что PowerShell позволяет ИТ-администраторам легко контролировать все эти сетевые ресурсы и контролировать их, просто набрав строку кода в командной строке.
PowerShell также является важной частью управления развертыванием Microsoft Office 365 в масштабах компании. В PowerShell есть много полезных команд администрирования, которые недоступны на веб-портале администрирования Office 365.Например, по умолчанию в Office 365 для бизнеса либо все пользователи меняют пароли на регулярной основе, либо никто никогда не меняет свои пароли. Amaxra использует PowerShell, чтобы позволить отдельным пользователям Office 365 в нашей организации использовать двухфакторную аутентификацию, чтобы не менять пароли на регулярной основе. Без PowerShell у нас не было бы возможности изменить параметры пароля по умолчанию для Office 365.
Почему навыки PowerShell так популярны
Общность между тремя причинами востребованности навыков PowerShell очевидна: командлеты сценариев в PowerShell похожи на программирование.Поскольку каждая организация полагается на ИТ для повышения производительности, создание сценариев PowerShell является востребованной возможностью. В Amaxra у нас часто есть вакансии, требующие навыков работы с PowerShell, перечисленные на нашей странице «Рекомендуемые возможности».
У вас есть навыки работы с PowerShell и вы хотите использовать их в качестве консультанта с Amaxra? Свяжитесь с нами, и мы поможем вам найти ваш следующий проект!
Свяжитесь со мной по адресу [email protected] или позвоните по телефону 425 708 8841, если у вас есть какие-либо вопросы или комментарии к этому блогу.
Майк Арнцен
Майк - опытный эксперт в области технологий, обладающий знаниями в области корпоративного программного обеспечения, безопасности и внедрения облачных технологий. Он имеет сильное инженерное образование, окончил Школу радио Королевских ВВС Австралии и аспирантуру по волоконной оптике в Королевском Мельбурнском технологическом институте.