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:

  • Microsoft.Management.Infrastructure.CimInstance#ROOT/StandardCimv2/MSFT_NetAdapter

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?

- David Moravec, MVP