Provádění síťových úloh

Tato ukázka platí jenom pro platformy Windows.

Vzhledem k tomu, že protokol TCP/IP je nejčastěji používaný síťový protokol, zahrnuje většina úloh správy síťových protokolů nízké úrovně protokol TCP/IP. V této části k těmto úlohám používáme PowerShell a rozhraní WMI.

Výpis IP adres pro počítač

Pokud chcete získat všechny IP adresy používané na místním počítači, použijte následující příkaz:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Select-Object -ExpandProperty IPAddress

Vzhledem k tomu, IPAddress vlastnost Win32_NetworkAdapterConfiguration objektu je pole, musíte použít ExpandProperty parametr Select-Object zobrazit celý seznam adres.

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

Pomocí rutiny Get-Member můžete vidět, že vlastnost IPAddress je pole:

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;}

Vlastnost IPAddress pro každý síťový adaptér je ve skutečnosti pole. Složené závorky v definici označují, že IPAddress není hodnota System.String, ale pole hodnot System.String.

Výpis konfiguračních dat PROTOKOLU IP

Pokud chcete zobrazit podrobná konfigurační data PROTOKOLU IP pro každý síťový adaptér, použijte následující příkaz:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true

Výchozí zobrazení pro objekt konfigurace síťového adaptéru je velmi omezenou sadou dostupných informací. Pro hloubkovou kontrolu a řešení potíží použijte Select-Object nebo formátovací rutinu, například Format-List, k určení vlastností, které se mají zobrazit.

V moderních sítích TCP/IP pravděpodobně nemáte zájem o vlastnosti IPX nebo WINS. Pomocí parametru Select-Object ExcludeProperty můžete skrýt vlastnosti s názvy začínajícími na "WINS" nebo "IPX".

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Select-Object -ExcludeProperty IPX*,WINS*

Tento příkaz vrátí podrobné informace o vlastnostech konfigurace PROTOKOLU DHCP, DNS, směrování a dalších podverzech konfigurace PROTOKOLU IP.

Pinging computers

Pomocí Win32_PingStatus můžete na počítači provést jednoduchý příkaz ping. Následující příkaz provede příkaz ping, ale vrátí dlouhý výstup:

Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"

Užitečnější formulář pro souhrnné informace zobrazení vlastností Address, ResponseTime a StatusCode, jak je vygenerováno následujícím příkazem. Parametr Format-Table Automatické změny velikosti sloupců tabulky tak, aby se v PowerShellu zobrazoval správně.

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

StatusCode of 0 označuje úspěšný příkaz ping.

Pole můžete použít k příkazu ping více počítačů pomocí jediného příkazu. Vzhledem k tomu, že existuje více než jedna adresa, použijte ForEach-Object příkaz ping na každou adresu samostatně:

'127.0.0.1','localhost','bing.com' |
  ForEach-Object -Process {
    Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
      Select-Object -Property Address,ResponseTime,StatusCode
  }

Stejný formát příkazu můžete použít k příkazu ping všech adres v podsíti, jako je privátní síť, která používá číslo sítě 192.168.1.0 a standardní masku podsítě třídy C (255.255.255.0)., Pouze adresy v rozsahu 192.168.1.1 až 192.168.1.254 jsou legitimní místní adresy (0 je vždy vyhrazeno pro číslo sítě a 255 je adresa vysílání podsítě).

Chcete-li znázorňovat pole čísel od 1 do 254 v PowerShellu, použijte výraz 1..254. Úplný příkaz ping podsítě lze provést přidáním každé hodnoty v rozsahu na částečnou adresu v příkazu ping:

1..254| ForEach-Object -Process {
  Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_'") } |
    Select-Object -Property Address,ResponseTime,StatusCode

Všimněte si, že tato technika pro generování rozsahu adres se dá použít i jinde. Úplnou sadu adres můžete vygenerovat tímto způsobem:

$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}

Načítání vlastností síťového adaptéru

Dříve jsme se zmínili, že byste mohli načíst obecné vlastnosti konfigurace pomocí třídy Win32_NetworkAdapterConfiguration . I když nejsou výhradně informace o protokolu TCP/IP, můžou být užitečné informace o síťovém adaptéru, jako jsou adresy MAC a typy adaptérů, abyste pochopili, co se děje s počítačem. Pokud chcete získat souhrn těchto informací, použijte následující příkaz:

Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .

Přiřazení domény DNS pro síťový adaptér

Pokud chcete přiřadit doménu DNS pro automatické překlad názvů, použijte metodu SetDNSDomain Win32_NetworkAdapterConfiguration. Parametr Invoke-CimMethod dotazu přebírá řetězec dotazu WQL. Rutina volá metodu určenou pro každou instanci vrácenou dotazem.

$wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True'
$args = @{ DnsDomain = 'fabrikam.com'}
Invoke-CimMethod -MethodName SetDNSDomain -Arguments $args -Query $wql

IPEnabled=True Filtrování je nezbytné, protože i v síti, která používá pouze protokol TCP/IP, několik konfigurací síťových adaptérů v počítači není pravdivé adaptéry TCP/IP. Jsou to obecné softwarové prvky podporující RAS, VPN, QoS a další služby pro všechny adaptéry, a proto nemají vlastní adresu.

Provádění úloh konfigurace DHCP

Úpravy podrobností DHCP zahrnují práci se sadou síťových adaptérů, stejně jako konfigurace DNS. Pomocí rozhraní WMI můžete provádět několik různých akcí.

Vyhledání adaptérů s podporou DHCP

K vyhledání adaptérů s podporou DHCP v počítači použijte následující příkaz:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"

Pokud chcete vyloučit adaptéry s problémy s konfigurací PROTOKOLU IP, můžete načíst pouze adaptéry s podporou PROTOKOLU IP:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true"

Načítání vlastností DHCP

Vzhledem k tomu, že vlastnosti související s protokolem DHCPDHCP pro adaptér obvykle začínají , můžete použít parametr Format-Table Vlastnost k zobrazení pouze těchto vlastností:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter  "IPEnabled=$true and DHCPEnabled=$true" |
  Format-Table -Property DHCP*

Povolení protokolu DHCP na každém adaptéru

Pokud chcete povolit protokol DHCP na všech adaptérech, použijte následující příkaz:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE IPEnabled=True and DHCPEnabled=False'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql

Použitím příkazu IPEnabled=True and DHCPEnabled=False filtru se vyhnete povolení dhcp, kde je už povolená.

Uvolnění a obnovení zapůjčení DHCP u konkrétních adaptérů

Instance třídy Win32_NetworkAdapterConfigurationReleaseDHCPLease a RenewDHCPLease metody. Obě se používají stejným způsobem. Obecně platí, že tyto metody použijte, pokud potřebujete uvolnit nebo obnovit adresy adaptéru v konkrétní podsíti. Nejjednodušší způsob, jak filtrovat adaptéry v podsíti, je zvolit pouze konfigurace adaptérů, které pro tuto podsíť používají bránu. Následující příkaz například uvolní všechna zapůjčení DHCP na adaptérech v místním počítači, které získávají zapůjčení DHCP z verze 192.168.1.254:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql

Jedinou změnou pro prodloužení zapůjčení DHCP je použití RenewDHCPLease metody místo ReleaseDHCPLease metody:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName RenewDHCPLease -Query $wql

Poznámka:

Při použití těchto metod na vzdáleném počítači mějte na paměti, že pokud jste k němu připojeni prostřednictvím adaptéru s uvolněným nebo obnoveným zapůjčením, můžete ztratit přístup ke vzdálenému systému.

Uvolnění a obnovení zapůjčení DHCP na všech adaptérech

Globální verze adres DHCP nebo prodloužení platnosti můžete provádět na všech adaptérech pomocí Win32_NetworkAdapterConfiguration metod ReleaseDHCPLeaseAll a RenewDHCPLeaseAll. Příkaz však musí platit pro třídu WMI, nikoli pro konkrétní adaptér, protože uvolnění a obnovení zapůjčení se provádí globálně u třídy, ne na konkrétním adaptéru. Rutina Invoke-CimMethod může volat metody třídy.

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll

K vyvolání metody RenewDHCPLeaseAll můžete použít stejný formát příkazu:

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll

Vytvoření sdílené síťové složky

Pokud chcete vytvořit sdílenou síťovou složku, použijte metodu CreateWin32_Share:

Invoke-CimMethod -ClassName Win32_Share -MethodName Create -Arguments @{
    Path = 'C:\temp'
    Name = 'TempShare'
    Type = [uint32]0 #Disk Drive
    MaximumAllowed = [uint32]25
    Description = 'test share of the temp folder'
}

Toto je ekvivalentem následujícího net share příkazu ve Windows:

net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"

Chcete-li volat metodu třídy WMI, která přebírá parametry, musíte vědět, jaké parametry jsou k dispozici a typy těchto parametrů. Můžete například zobrazit seznam metod Win32_Class pomocí následujících příkazů:

(Get-CimClass -ClassName Win32_Share).CimClassMethods
Name          ReturnType Parameters                                   Qualifiers
----          ---------- ----------                                   ----------
Create            UInt32 {Access, Description, MaximumAllowed, Name…} {Constructor, Implemented, MappingStrings, Stati…
SetShareInfo      UInt32 {Access, Description, MaximumAllowed}        {Implemented, MappingStrings}
GetAccessMask     UInt32 {}                                           {Implemented, MappingStrings}
Delete            UInt32 {}                                           {Destructor, Implemented, MappingStrings}

Pomocí následujícího příkazu vypíšete parametry Create metody.

(Get-CimClass -ClassName Win32_Share).CimClassMethods['Create'].Parameters
Name            CimType Qualifiers                                  ReferenceClassName
----            ------- ----------                                  ------------------
Access         Instance {EmbeddedInstance, ID, In, MappingStrings…}
Description      String {ID, In, MappingStrings, Optional}
MaximumAllowed   UInt32 {ID, In, MappingStrings, Optional}
Name             String {ID, In, MappingStrings}
Password         String {ID, In, MappingStrings, Optional}
Path             String {ID, In, MappingStrings}
Type             UInt32 {ID, In, MappingStrings}

Můžete si také přečíst dokumentaci k metodě Create třídy Win32_Share.

Odebrání sdílené síťové složky

Sdílenou síťovou složku můžete odebrat pomocí Win32_Share, ale proces se mírně liší od vytvoření sdílené složky, protože potřebujete načíst konkrétní instanci, která se má odebrat, a ne Win32_Share třídu. Následující příklad odstraní sdílenou složku TempShare:

$wql = 'SELECT * from Win32_Share WHERE Name="TempShare"'
Invoke-CimMethod -MethodName Delete -Query $wql

Připojení síťové jednotky přístupné pro Windows

Rutina New-PSDrive může vytvořit jednotku PowerShellu, která je namapovaná na sdílenou síťovou složku.

New-PSDrive -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"

Jednotky vytvořené tímto způsobem jsou ale dostupné jenom pro relaci PowerShellu, ve které se vytvářejí. Pokud chcete namapovat jednotku, která je k dispozici mimo PowerShell (nebo do jiných relací PowerShellu), musíte použít parametr Zachovat .

New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"

Poznámka:

Při spuštění v kontextu se zvýšenými oprávněními nemusí být trvale mapované jednotky dostupné. Toto je výchozí chování nástroje Řízení uživatelských účtů systému Windows. Další informace najdete v následujícím článku: