Nettverk feilsøking hjelp PowerShell


Innledning

I min forrige artikkel administrerende nettverkskort som bruker Powershell her i avsnittet mitt artikler på WindowsNetworking.com vi undersøkt noen av Windows Powershell er innebygd i Windows Server 2012 og Windows Server 2012 R2 som lar deg utføre nettverksadministrasjonsoppgaver fra Powershell kommandolinjen eller ved å kjøre Powershell script. Powershell kan ikke bare brukes til å administrere nettverkskonfigurasjoner, men også for å feilsøke nettverksproblemer når de oppstår i miljøet. Denne artikkel gir noen eksempler på hva du kan gjøre i dette området. Forklaringen og prosedyrer inkludert nedenfor er tilpasset fra boken min Training Guide: Installere og konfigurere Windows Server 2012 R2
(Microsoft Press, 2014). Også inkludert nær slutten av denne artikkelen er noen flere tips om dette temaet som jeg har sanket fra større IT pro samfunnet, inkludert de nesten 100.000 tilhengere av våre WServerNews ukentlig nyhetsbrev som du kan abonnere på http: //www.wservernews .com /subscribe.htm.

Get-NetAdapter og Get-VMNetworkAdapter

Get-NetAdapter cmdlet ble først introdusert i Windows Server 2012 for å gjøre deg i stand til å hente konfigurasjonen av alle fysiske nettverkskort i serveren. Hvis du opplever det som kan være et nettverk problem med en av serverne, er det første du sannsynligvis ønske å kontrollere konfigurasjonen av nettverksadaptere. For eksempel, se hva som skjer når du kjører denne kommandoen på en Hyper-V vert heter SERVER1.contoso.com som kjører Windows Server 2012 R2:
PS C: \\ > Get-NetAdapter Navn InterfaceDescription ifIndex statu s ---- -------------------- ------- ----- vEthernet (Broadcom Ne .. . Hyper-V virtuelle Ethernet Adapter # 2 18 UpEthernet Broadcom NetXtreme Gigabit Ethernet 12 Di ... Ethernet 2 Broadcom NetXtreme Gigabit Ethernet # 2 13 Up

Siden dette er en Hyper-V host, er det sannsynligvis noen virtuelle maskiner som kjører på det. På Hyper-V vertene kjører Windows Server 2012 og senere, kan du bruke Get-VMNetworkAdapter cmdlet for å innhente informasjon konfigurasjon for nettverkskortene for disse virtuelle maskiner. For eksempel henter følgende kommando informasjon om alle virtuelle maskin nettverkskort på verts:
PS C: \\ > Get-VMNetworkAdapter * Navn IsManagementOs VMName SwitchName ---- -------------- ------ ------ ---- Network Adapter False SRV-STANDARD Broadcom NetXtreme Gigabit Ether ... Network Adapter False SRV2012R2 Broadcom NetXtreme Gigabit Ether ... Network Adapter False SRV2012R2Network Adapter False SRV2012 Broadcom NetXtreme Gigabit Ether ... Network Adapter False SRV2012 Broadcom NetXtreme Gigabit Ether ... Network Adapter False Gen2Test Broadcom NetXtreme Gigabit Ether ...

Du kan også bruke Get-VMNetworkAdapter med -VMName parameter for å vise nettverkskort for en bestemt virtuell maskin på verten.

Get- NetIPAddress

Get-NetIPAddress cmdlet ble først introdusert i Windows Server 2012 for å gjøre deg i stand til å hente IP-adressene som er konfigurert på systemets nettverkskort. Du kan bruke Get-NetIPAddress cmdlet både på fysiske servere og innen virtuelle maskiner. For eksempel kan du kjøre denne kommandoen på SERVER1 beskrevet ovenfor:
PS C: \\ > Get-NetIPAddress IPAddress: fe80 :: 8843: 1e98: a8a6: 6fab% 12InterfaceIndex: 12InterfaceAlias: EthernetAddressFamily: IPv6Type: UnicastPrefixLength: 64PrefixOrigin: WellKnownSuffixOrigin: LinkAddressState: DeprecatedValidLifetime: Infinite ([Timespan] :: MAXVALUE) PreferredLifetime: Infinite ([Timespan] :: MAXVALUE) SkipAsSource: FalsePolicyStore: ActiveStore IPAddress: fe80 :: 1905: 8ae1: 5bfd: 7b8e% 18InterfaceIndex: 18InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) AddressFamily: IPv6Type: UnicastPrefixLength: 64PrefixOrigin: WellKnownSuffixOrigin: LinkAddressState: PreferredValidLifetime: Infinite ([Timespan] :: MAXVALUE) PreferredLifetime: Infinite ([Timespan] :: MAXVALUE) SkipAsSource: FalsePolicyStore: ActiveStore IPAddress: fe80 :: 5efe: 172.16.11.30% 14InterfaceIndex: 14InterfaceAlias. ISATAP {3D53D3DC-9209-4C7F -8AAE-AD8ADCBD93FC} AddressFamily: IPv6Type: UnicastPrefixLength: 128PrefixOrigin: WellKnownSuffixOrigin: LinkAddressState: DeprecatedValidLifetime: Infinite ([Timespan] :: MAXVALUE) PreferredLifetime: Infinite ([Timespan] :: MAXVALUE) SkipAsSource: FalsePolicyStore: ActiveStore IPAddress: :: 1InterfaceIndex: 1InterfaceAlias: Loopback Pseudo-Interface 1AddressFamily: IPv6Type: UnicastPrefixLength: 128PrefixOrigin: WellKnownSuffixOrigin: WellKnownAddressState: PreferredValidLifetime: Infinite ([tidsperiode] :: MAXVALUE) PreferredLifetime: Infinite ([tidsperiode] :: MAXVALUE) SkipAsSource: FalsePolicyStore: ActiveStore IPAddress: 169.254.111.171 InterfaceIndex: 12InterfaceAlias: EthernetAddressFamily: IPv4Type: UnicastPrefixLength: 16PrefixOrigin: WellKnownSuffixOrigin: LinkAddressState: TentativeValidLifetime: Infinite ([tidsperiode] :: MAXVALUE) PreferredLifetime: Infinite ([Timespan] :: MAXVALUE) SkipAsSource: FalsePolicyStore: ActiveStore ip-adresse: 172.16.11.30InterfaceIndex: 18InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) AddressFamily: IPv4Type: UnicastPrefixLength: 24PrefixOrigin: ManualSuffixOrigin: ManualAddressState: PreferredValidLifetime: Infinite ([Timespan] :: MAXVALUE) PreferredLifetime: Infinite ([Timespan] :: MAXVALUE) SkipAsSource: FalsePolicyStore: ActiveStore IPAddress: 127.0.0.1InterfaceIndex: 1InterfaceAlias: Loopback Pseudo-Interface 1AddressFamily: IPv4Type: UnicastPrefixLength: 8PrefixOrigin: WellKnownSuffixOrigin: WellKnownAddressState: PreferredValidLifetime: Infinite ([Timespan] :: MAXVALUE) PreferredLifetime: Infinite ([Timespan] :: MAXVALUE) SkipAsSource: FalsePolicyStore: ActiveStore

Du kan se at Get-NetIPAddress returnerer mye nyttig informasjon som du kan analysere eller rør inn andre kommandoer for videre behandling

Get-NetIPConfiguration

. Get-NetIPConfiguration cmdlet ble først introdusert i Windows Server 2012 for å gjøre deg i stand til å hente dyktige nettverksgrensesnitt, IP-adresser og DNS-tjenere som er satt på et system. Nøkkelen verdien av Get-NetIPConfiguration er at det gir deg det store bildet av nettverkskonfigurasjon systemets i en kortfattet måte. For eksempel, se hva som skjer når du kjører denne kommandoen på SERVER1 uten å spesifisere ytterligere alternativer:
PS C: \\ > Get-NetIPConfiguration InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) InterfaceIndex: 18InterfaceDescription: Hyper-V virtuelle Ethernet Adapter # 2NetProfile.Name: contoso.comIPv4Address: 172.16.11.30IPv6DefaultGateway: IPv4DefaultGateway: 172.16.11.1DNSServer: 172,16. 11.50 InterfaceAlias: EthernetInterfaceIndex: 12InterfaceDescription: Broadcom NetXtreme Gigabit EthernetNetAdapter.Status: Disconnected

For å gjøre ting enda enklere, kan du bruke alias GIP stedet for å skrive Get-NetIPConfiguration på kommandolinjen. For eksempel si at du bare vil hente konfigurasjonen DNS-server til nettverksadapteren som alias begynner med vEthernet som vist ovenfor. Her er hvordan du kan gjøre dette:
PS C: \\ > $ a = GIP 'v *' PS C: \\ > $ a.DNSServer InterfaceAlias ​​Interface Adresse ServerAddresses PSComputerName Index Familie -------------- --------- ------- --------- ------ -------------- vEthernet (Broadcom NetXt ... 18 IPv6 {} vEthernet (Broadcom NetXt ... 18 IPv4 {172.16.11.50}

 Get- NetIPConfiguration kan også gi detaljert utgang hvis du spesifisere -Detaljert alternativ som vist her: PS C: \\ > GIP -Detaljert Computer: SERVER1InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) InterfaceIndex: 18InterfaceDescription: Hyper-V virtuelle Ethernet Adapter # 2NetAdapter.LinkLayerAddress: 00-24-E8-50-17-F3NetAdapter.Status: UpNetProfile.Name: contoso.comNetProfile.NetworkCategory: DomainAuthenticatedNetProfile.IPv6Connectivity: LocalNetworkNetProfile.IPv4Connectivity: InternetIPv6LinkLocalAddress: fe80 :: 1905: 8ae1: 5bfd: 7b8e% 18IPv4Address: 172.16.11.30IPv6DefaultGateway: IPv4DefaultGateway: 172.16.11.1NetIPv6Interface.NlMTU: 1500NetIPv4Interface.NlMTU: 1500NetIPv6Interface.DHCP: EnabledNetIPv4Interface.DHCP: DisabledDNSServer: 172.16.11.50 Computer: SERVER1InterfaceAlias: EthernetInterfaceIndex: 12InterfaceDescription: Broadcom NetXtreme Gigabit EthernetNetAdapter.LinkLayerAddress: 00-24-E8-50-17-F4NetAdapter.Status: Disconnected 
Test-NetConnection

Test-NetConnection cmdlet har blitt introdusert i Windows Server 2012 R2 for å gjøre deg i stand til å utføre ICMP og TCP tilkoblings tester . For å se hvordan dette cmdlet kan brukes, utføre noen tester fra en Windows Powershell ledeteksten på samme server som heter SERVER1.contoso.com beskrevet tidligere.

Først test nettverkstilkobling mellom SERVER1 og en annen server som heter SERVER2 på nettverk:
PS C: \\ > Test-NetConnection SERVER2.contoso.com Computer: SERVER2.contoso.comRemoteAddress: 172.16.11.50InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) SourceAddress: 172.16.11.30PingSucceeded: TruePingReplyDetails (RTT): 0 ms

Du kan også bruke Test-NetConnection cmdlet for å teste nettverkstilkobling med vertene på eksterne nettverk og over Internett. For eksempel, se om SERVER1 kan etablere nettverkstilkobling med nettstedet Microsoft Xbox:
PS C: \\ > Test-NetConnection www.xbox.com Computer: www.xbox.comRemoteAddress: 184.29.219.150InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) SourceAddress: 172.16.11.30PingSucceeded: TruePingReplyDetails (RGT): 26 ms

Du kan også bruke -TraceRoute muligheten til å spore den nøyaktige nettverket rute brukes til å etablere tilkobling med eksterne området:
PS C: \\ > Test-NetConnection www.xbox.com -TraceRoute Computer: www.xbox.comRemoteAddress: 184.29.219.150InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) SourceAddress: 172.16.11.30PingSucceeded: TruePingReplyDetails (RGT): 29 msTraceRoute: 172.16.11.1 142.161.5.200 142.161.5.65 4.28.68.21 4.69.158.146 4.69.138.166 4.68.111.70 184.29.219.150

Du kan også bruke Test-NetConnection å teste tilkobling på en bestemt TCP-port ved å inkludere -Port alternativet i din kommando. For eksempel kan du bekrefte at nettstedet Xbox kan nås på standard HTTP-port, som er TCP port 80:
PS C: \\ > Test-NetConnection www.xbox.com -Port 80 Computer: www.xbox.comRemoteAddress: 184.29.219.150RemotePort: 80InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) SourceAddress: 172.16.11.30PingSucceeded: TruePingReplyDetails (RGT): 28 msTcpTestSucceeded: Sann

Du kan også bruke et alias som RDP å kontrollere TCP tilkobling med den velkjente port for Remote Desktop Protocol (RDP), som er TCP-port 3389. For eksempel kan du se om SERVER1 kan etablere tilkobling til TCP-port 3389 på SERVER2:
PS C: \\ > Test-NetConnection SERVER2 RDP Computer: SERVER2RemoteAddress: 172.16.11.50RemotePort: 3389InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) SourceAddress: 172.16.11.30PingSucceeded: TruePingReplyDetails (RGT): 0 msTcpTestSucceeded: Sanne

Suksessen testen ovenfor indikerer at Remote Desktop er aktivert på serveren SERVER2.

Test-NetConnection lar deg også bruke andre aliaser foruten RDP for testing tilkobling med kjente TCP-portene. For eksempel kan du også bruke følgende:

SMB

HTTP

PING

Nå kan du se hva som skjer når du prøver RDP test mot serveren HOST40 på nettverket:
PS C: \\ > Test-NetConnection HOST40 RDPWARNING: Ping til HOST40 mislyktes - Status: TimedOut Computer: HOST40RemoteAddress: 172.16.11.61RemotePort: 3389InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) SourceAddress: 172.16.11.30PingSucceeded: FalsePingReplyDetails (RGT): 0 msTcpTestSucceeded: Sann

Merk at RDP-tilkobling lyktes men pinge serveren mislyktes. Dette indikerer at serverens brannmur er aktiv og blokkere innkommende ICMP-meldinger som blir sendt av SERVER1.

Test-NetConnection cmdlet støtter også en -InformationLevel alternativ som gjør det mulig å innhente nærmere opplysninger om tilkoblingstesten utføres:
PS C: \\ > Test-NetConnection SERVER2 RDP -InformationLevel Detaljert Computer: SERVER2RemoteAddress: 172.16.11.50RemotePort: 3389AllNameResolutionResults: 172.16.11.50 fe80 :: 396f: 7162: ab64: fa82MatchingIPsecRules: NetworkIsolationContext: Privat NetworkInterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) SourceAddress: 172.16.11.30NetRoute (NextHop): 0.0.0.0PingSucceeded: TruePingReplyDetails (RGT): 0 msTcpTestSucceeded: Sann

 Du kan også bruke -InformationLevel å undertrykke all produksjon bortsett om ønsket testen var vellykket: PS C: \\ > Test-NetConnection HOST40 RDP -InformationLevel QuietWARNING: Ping til HOST40 mislyktes - Status: TimedOutTruePS C: \\ > 

En siste merknad om test-NetConnection er at du også kan kjøre den uten parametere, som dette:
PS C: \\ > Test-NetConnection Computer: internetbeacon.msedge.netRemoteAddress: 131.253.3.197InterfaceAlias: vEthernet (Broadcom NetXtreme Gigabit Ethernet # 2 - Virtual Switch) SourceAddress: 172.16.11.30PingSucceeded: TruePingReplyDetails (RTT): 49 ms

Å gjøre dette bare tester om serveren har en nettverkstilkobling med Internett ved testing tilkobling med en ekstern server som tilhører DNS-domene msedge.net, som er registrert av Microsoft.

noen flere tips

Til slutt, her er noen flere tips om dette temaet som jeg har hentet fra mine kolleger i IT og fra lesere av vårt nyhetsbrev WServerNews.com.

DotNetPing

Ben Schultz har lagt ut en nyttig skript som heter DotNetPing til skriptsenteret Repository på TechNet. Skriptet tar IP-adressen eller vertsnavn eller en vert og ping det å gi deg kilden IP-adressen til stakken brukes til å pinge verten. Manuset er også et godt eksempel på hvordan du kan bruke System.NET å forbedre dine Powershell script.

Get-NetIPConfiguration vs IPConfig

Get-NetIPConfiguration cmdlet er ikke en eksakt erstatning for IPConfig kommandolinjeverktøy. For eksempel IPConfig omfatter også brytere som /flushdns /registerdns og /displaydns å administrere DNS-innstillingene og kunden resolver cache. Du kan ikke bruke Get-NetIPConfiguration å gjøre det, men det er andre Powershell cmdlets du kan bruke som Clear-DNSClientCache, Register DNSClient og Resolve-DNSName.

Du kan også bruke IPConfig med /release og /fornye brytere for å frigjøre og fornye DHCP-konfigurasjon av nettverkskort på systemet ditt. Nok en gang, kan du ikke bruke Get-NetIPConfiguration å gjøre dette, men du kan prøve å bruke Restart-NetAdapter for dette formålet.

Test port tilkobling

Hvis du ønsker å sjekke om et system er "lytte" dvs. om det har en viss TCP port åpen for å etablere nettverkstilkobling med deg, kan du prøve å utnytte Test-PortConnection funksjon ved "Techibee" som er beskrevet her.

IPConfig reimagined

Du bør også sjekke ut artikkelen "IPConfig reimagined: Bygge en enkel Powershell Tool" i Issue # 102 av Mark Minasi nyhetsbrev. Mark har noen gode tips om hvordan du kan vise IP-adressen info på en måte som er lett å lese og tolke.