Seriál Windows PowerShell v3 – práce se síťovým adaptérem (část 32.)

Pokud se učíte jakýkoli nový program, je vždy nejlepší používat jej co nejčastěji. To samé platí i pro PowerShell. Proto jsem již hodně dlouho nepustil cmd.exe a vše spouštím právě z konzole PowerShellu. Dalším krokem je nahrazení nativních příkazů Windows jejich cmdlety a funkcemi. Typickým případem jsou dva nejčastější: ping a ipconfig. Ping má svůj protějšek v cmdletu Test-Connection a ipconfig ve funkci Get-NetIPConfiguration. Dnes si povíme právě o funkcích sloužících k práci se síťovým rozhraním.

Modul NetTCPIP

Ukažme si dostupné funkce.

PS C:\> Get-Command -Module NetTCPIP

CommandType  Name                        ModuleName 
-----------  ----                        ---------- 
Function     Get-NetIPAddress            NetTCPIP 
Function     Get-NetIPConfiguration      NetTCPIP 
Function     Get-NetIPInterface          NetTCPIP 
Function     Get-NetIPv4Protocol         NetTCPIP 
Function     Get-NetIPv6Protocol         NetTCPIP 
Function     Get-NetNeighbor             NetTCPIP 
Function     Get-NetOffloadGlobalSetting NetTCPIP 
Function     Get-NetPrefixPolicy         NetTCPIP 
Function     Get-NetRoute                NetTCPIP 
Function     Get-NetTCPConnection        NetTCPIP 
Function     Get-NetTCPSetting           NetTCPIP 
Function     Get-NetTransportFilter      NetTCPIP 
Function     Get-NetUDPEndpoint          NetTCPIP 
Function     Get-NetUDPSetting           NetTCPIP 
Function     New-NetIPAddress            NetTCPIP 
Function     New-NetNeighbor             NetTCPIP 
Function     New-NetRoute                NetTCPIP 
Function     New-NetTransportFilter      NetTCPIP 
Function     Remove-NetIPAddress         NetTCPIP 
Function     Remove-NetNeighbor          NetTCPIP 
Function     Remove-NetRoute             NetTCPIP 
Function     Remove-NetTransportFilter   NetTCPIP 
Function     Set-NetIPAddress            NetTCPIP 
Function     Set-NetIPInterface          NetTCPIP 
Function     Set-NetIPv4Protocol         NetTCPIP 
Function     Set-NetIPv6Protocol         NetTCPIP 
Function     Set-NetNeighbor             NetTCPIP 
Function     Set-NetOffloadGlobalSetting NetTCPIP 
Function     Set-NetRoute                NetTCPIP 
Function     Set-NetTCPSetting           NetTCPIP 
Function     Set-NetUDPSetting           NetTCPIP

Stejně jako v minulém díle našeho seriálu vidíme, že množství funkcí je opravdu velké.

Get-NetIPConfiguration

Podíváme se rovnou na náhradu příkazu ipconfig:

PS C:\> Get-NetIPConfiguration

InterfaceAlias       : Wi-Fi 
InterfaceIndex       : 12 
InterfaceDescription : Intel(R) WiFi Link 
NetProfile.Name      : WiFi 
IPv4Address          : 192.168.100.10 
IPv6DefaultGateway   : 
IPv4DefaultGateway   : 192.168.100.1 
DNSServer            : 192.168.100.1

InterfaceAlias       : Ethernet 
InterfaceIndex       : 13 
InterfaceDescription : Intel(R) Gigabit Network Connection 
NetAdapter.Status    : Disconnected

Z výstupu je jasné, že aktivní připojení je přes Wi-Fi a že máme dále dostupný ještě síťový adaptér Ethernet, který je momentálně odpojený. Pokud bychom použili parametr Detailed, dozvíme se podrobnější informace (podobné použití ipconfig /all).

Na tomto místě upozorním ještě na jeden chyták. Už jste se určitě potkali se situací, kdy jste si všimli, že ne všechny vlastnosti určitého zdroje (soubor, process, …) jsou ve výstupu vidět. Stejné je to i nyní. Pokud chcete zobrazit opravdu všechny parametry vašeho připojení, zkuste použít cmdlet Format-List:

PS C:\> Get-NetIPConfiguration | Format-List *

ComputerName         : WIN8 
InterfaceAlias       : Wi-Fi 
InterfaceIndex       : 12 
InterfaceDescription : Intel(R) WiFi Link AGN 
NetAdapter           : MSFT_NetAdapter (CreationClassName = "MSFT_NetAdapter", DeviceID = "{0-5EF4-449A-AFB5-2E082768F5}", SystemCreationClassName = "CIM_NetworkPort", SystemName = "Win8") 
NetIPv6Interface     : MSFT_NetIPInterface (Name = ";?55??55;", CreationClassName = "", SystemCreationClassName = "", SystemName = "")

NetIPv4Interface     : MSFT_NetIPInterface (Name = ";?55?55;", CreationClassName = "", SystemCreationClassName = "", SystemName = "") 
NetProfile           : MSFT_NetConnectionProfile (InstanceID = "{F8BE4A34-5EF4-449A-AFB5-2EC8282768F5}") 
AllIPAddresses       : {192.168.100.103, ab80::c271:b947:89c0:bdea%12} 
IPv6Address          : {} 
IPv6TemporaryAddress : {} 
IPv6LinkLocalAddress : {ab80::c271:b947:89c0:bdea%12} 
IPv4Address          : {192.168.100.103} 
IPv6DefaultGateway   : 
IPv4DefaultGateway   : {MSFT_NetRoute (InstanceID = ":8:8:8:9:55;?55;C?8;@B8;:8;55;")} 
DNSServer            : {MSFT_DNSClientServerAddress (Name = "12", CreationClassName = "", SystemCreationClassName = "", SystemName = "23"), MSFT_DNSClientServerAddress (Name = "12", CreationClassName = "", SystemCreationClassName = "", SystemName = "2")} 
Detailed             : False

Get-NetIPInterface

Další možností je samozřejmost podívat se na konkrétní síťové rozhraní

PS C:\> Get-NetIPInterface

ifIndex InterfaceAlias       AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp     ConnectionState PolicyStore 
------- --------------       ------------- ------------ --------------- ----     --------------- ----------- 
13      Ethernet             IPv6          1500         5               Disabled Disconnected    ActiveStore 
15      Teredo Tunnelinge... IPv6          1280         50              Disabled Connected       ActiveStore 
14      isatap.{F8-449A-A... IPv6          1280         50              Disabled Disconnected    ActiveStore 
12      Wi-Fi                IPv6          1500         25              Enabled  Connected       ActiveStore 
1       Loopback Pseudo-     IPv6          4294967295   50              Disabled Connected       ActiveStore 
13      Ethernet             IPv4          1500         5               Enabled  Disconnected    ActiveStore 
12      Wi-Fi                IPv4          1500         25              Enabled  Connected       ActiveStore 
1       Loopback Pseudo-     IPv4          4294967295   50              Disabled Connected       ActiveStore

Ani u této funkce nezapomeňte použít Format-List!

NetAdapter

Druhým užitečným modulem pro práci se sítí je NetAdapter. Jak je již z názvu patrné, pracuje přímo s adaptérem. Pojďme si opět ukázat dostupné funkce:

PS C:\> Get-Command -Module NetAdapter

CommandType Name                                            ModuleName 
----------- ----                                            ---------- 
Function    Disable-NetAdapter                              NetAdapter 
Function    Disable-NetAdapterBinding                       NetAdapter 
Function    Disable-NetAdapterChecksumOffload               NetAdapter 
Function    Disable-NetAdapterEncapsulatedPacketTaskOffload NetAdapter 
Function    Disable-NetAdapterIPsecOffload                  NetAdapter 
Function    Disable-NetAdapterLso                           NetAdapter 
Function    Disable-NetAdapterPowerManagement               NetAdapter 
Function    Disable-NetAdapterQos                           NetAdapter 
Function    Disable-NetAdapterRdma                          NetAdapter 
Function    Disable-NetAdapterRsc                           NetAdapter 
Function    Disable-NetAdapterRss                           NetAdapter 
Function    Disable-NetAdapterSriov                         NetAdapter 
Function    Disable-NetAdapterVmq                           NetAdapter 
Function    Enable-NetAdapter                               NetAdapter 
Function    Enable-NetAdapterBinding                        NetAdapter 
Function    Enable-NetAdapterChecksumOffload                NetAdapter 
Function    Enable-NetAdapterEncapsulatedPacketTaskOffload  NetAdapter 
Function    Enable-NetAdapterIPsecOffload                   NetAdapter 
Function    Enable-NetAdapterLso                            NetAdapter 
Function    Enable-NetAdapterPowerManagement                NetAdapter 
Function    Enable-NetAdapterQos                            NetAdapter 
Function    Enable-NetAdapterRdma                           NetAdapter 
Function    Enable-NetAdapterRsc                            NetAdapter 
Function    Enable-NetAdapterRss                            NetAdapter 
Function    Enable-NetAdapterSriov                          NetAdapter 
Function    Enable-NetAdapterVmq                            NetAdapter 
Function    Get-NetAdapter                                  NetAdapter 
Function    Get-NetAdapterAdvancedProperty                  NetAdapter 
Function    Get-NetAdapterBinding                           NetAdapter 
Function    Get-NetAdapterChecksumOffload                   NetAdapter 
Function    Get-NetAdapterEncapsulatedPacketTaskOffload     NetAdapter 
Function    Get-NetAdapterHardwareInfo                      NetAdapter 
Function    Get-NetAdapterIPsecOffload                      NetAdapter 
Function    Get-NetAdapterLso                               NetAdapter 
Function    Get-NetAdapterPowerManagement                   NetAdapter 
Function    Get-NetAdapterQos                               NetAdapter 
Function    Get-NetAdapterRdma                              NetAdapter 
Function    Get-NetAdapterRsc                               NetAdapter 
Function    Get-NetAdapterRss                               NetAdapter 
Function    Get-NetAdapterSriov                             NetAdapter 
Function    Get-NetAdapterSriovVf                           NetAdapter 
Function    Get-NetAdapterStatistics                        NetAdapter 
Function    Get-NetAdapterVmq                               NetAdapter 
Function    Get-NetAdapterVmqQueue                          NetAdapter 
Function    Get-NetAdapterVPort                             NetAdapter 
Function    New-NetAdapterAdvancedProperty                  NetAdapter 
Function    Remove-NetAdapterAdvancedProperty               NetAdapter 
Function    Rename-NetAdapter                               NetAdapter 
Function    Reset-NetAdapterAdvancedProperty                NetAdapter 
Function    Restart-NetAdapter                              NetAdapter 
Function    Set-NetAdapter                                  NetAdapter 
Function    Set-NetAdapterAdvancedProperty                  NetAdapter 
Function    Set-NetAdapterBinding                           NetAdapter 
Function    Set-NetAdapterChecksumOffload                   NetAdapter 
Function    Set-NetAdapterEncapsulatedPacketTaskOffload     NetAdapter 
Function    Set-NetAdapterIPsecOffload                      NetAdapter 
Function    Set-NetAdapterLso                               NetAdapter 
Function    Set-NetAdapterPowerManagement                   NetAdapter 
Function    Set-NetAdapterQos                               NetAdapter 
Function    Set-NetAdapterRdma                              NetAdapter 
Function    Set-NetAdapterRsc                               NetAdapter 
Function    Set-NetAdapterRss                               NetAdapter 
Function    Set-NetAdapterSriov                             NetAdapter 
Function    Set-NetAdapterVmq                               NetAdapter

Poznámka: Rád bych upozornil na jednu věc. Vzhledem k množství dostupných funkcí, není mým cílem dnes ukázat jejich výstupy. Jde mi spíše o ukázání cesty a pouze některých (nejzajímavějších?). Jak jsem již řekl v prvním odstavci – PowerShell se nejlépe naučíte tak, že jej budete stále používat. Vyberte si proto funkci, která vám přijde zajímavá (ze začátku některou z Get-*), a podívejte se na její výstup. Každý den pak můžete přidat další.

Get-NetAdapter

Zkuste prozkoumat tuto funkci. Jak z ní získáte co nejvíc informací? Mohli byste postupovat například takto:

PS C:\> Get-NetAdapter 
PS C:\> Get-Help Get-NetAdapter 
PS C:\> Get-NetAdapter -Name Wi-Fi 
PS C:\> Get-NetAdapter -Name Wi-Fi | Format-List * 
PS C:\> Get-NetAdapter -Name Wi-Fi | Get-Member

Výstupem cmdletu Get-Member je objekt typu:

Podívejte se na MSFT_NetAdapter class článek na MSDN – stále je se co učit J

A co třeba Get-NetAdapterAdvancedProperty?