Udostępnij za pośrednictwem


Wykonywanie zadań sieciowych

Ten przykład dotyczy tylko platform systemu Windows.

Ponieważ protokół TCP/IP jest najczęściej używanym protokołem sieciowym, większość zadań administracyjnych protokołu sieciowego niskiego poziomu obejmuje protokół TCP/IP. W tej sekcji używamy programu PowerShell i usługi WMI do wykonywania tych zadań.

Wyświetlanie listy adresów IP dla komputera

Aby uzyskać wszystkie adresy IP używane na komputerze lokalnym, użyj następującego polecenia:

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

Ponieważ właściwość IPAddress obiektu Win32_NetworkAdapterConfiguration jest tablicą, należy użyć parametru ExpandPropertySelect-Object, aby wyświetlić całą listę adresów.

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

Za pomocą polecenia cmdlet Get-Member widać, że właściwość IPAddress jest tablicą:

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

Właściwość "Adres IP" dla każdej karty sieciowej jest w rzeczywistości tablicą. Nawiasy klamrowe w definicji wskazują, że IPAddress nie jest zmienną System.String, ale tablicą zmiennych System.String.

Wyświetlanie danych konfiguracji adresu IP

Aby wyświetlić szczegółowe dane konfiguracji adresu IP dla każdej karty sieciowej, użyj następującego polecenia:

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

Domyślnie wyświetlany obiekt konfiguracji karty sieciowej to bardzo ograniczony zestaw dostępnych informacji. Aby uzyskać szczegółowe badanie i rozwiązywanie problemów, użyj polecenia cmdlet Select-Object lub polecenia formatowania, takiego jak Format-List, do określenia właściwości, które mają być wyświetlone.

W nowoczesnych sieciach TCP/IP prawdopodobnie nie interesuje Cię właściwości IPX lub WINS. Możesz użyć parametru ExcludePropertySelect-Object, aby ukryć właściwości o nazwach rozpoczynających się od "WINS" lub "IPX".

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

To polecenie zwraca szczegółowe informacje o DHCP, DNS, routingu i innych pobocznych właściwościach konfiguracji IP.

Pingowanie komputerów

Możesz wykonać proste polecenie ping względem komputera przy użyciu Win32_PingStatus. Następujące polecenie wykonuje polecenie ping, ale zwraca długie dane wyjściowe:

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

Odpowiedź z Win32_PingStatus zawiera 29 właściwości. Możesz użyć Format-Table, aby wybrać właściwości, które są dla Ciebie najbardziej interesujące. Parametr AutoSizeFormat-Table zmienia rozmiar kolumn tabeli, tak aby były one wyświetlane prawidłowo w programie 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

Kod stanu 0 wskazuje na pomyślne wykonanie ping.

Za pomocą tablicy można wysłać polecenie ping do wielu komputerów za pomocą jednego polecenia. Ponieważ istnieje więcej niż jeden adres, użyj ForEach-Object, aby wysłać polecenie ping do każdego adresu oddzielnie:

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

Można użyć tego samego formatu polecenia, aby wysłać polecenie ping do wszystkich adresów w podsieci, takiej jak sieć prywatna używająca numeru sieciowego 192.168.1.0 i standardowej maski podsieci klasy C (255.255.255.0)., Tylko adresy z zakresu od 192.168.1.1 do 192.168.1.254 są uzasadnionymi adresami lokalnymi (0 jest zawsze zarezerwowana dla numeru sieci, a 255 to adres emisji podsieci).

Aby reprezentować tablicę liczb z zakresu od 1 do 254 w programie PowerShell, użyj wyrażenia 1..254. Aby wykonać pełne pingowanie podsieci, dodaj każdą wartość w danym zakresie do adresu częściowego w poleceniu ping.

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

Należy pamiętać, że ta technika generowania zakresu adresów może być również używana w innych miejscach. Pełny zestaw adresów można wygenerować w następujący sposób:

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

Pobieranie właściwości karty sieciowej

Wcześniej wspomnieliśmy, że można pobrać ogólne właściwości konfiguracji przy użyciu klasy Win32_NetworkAdapterConfiguration. Chociaż nie ma ściśle informacji o protokole TCP/IP, informacje o kartach sieciowych, takich jak adresy MAC i typy kart, mogą być przydatne do zrozumienia tego, co dzieje się z komputerem. Aby uzyskać podsumowanie tych informacji, użyj następującego polecenia:

Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .

Przypisywanie domeny DNS dla karty sieciowej

Aby przypisać domenę DNS do automatycznego rozpoznawania nazw, użyj metody SetDNSDomainWin32_NetworkAdapterConfiguration. Parametr QueryInvoke-CimMethod przyjmuje ciąg zapytania WQL. Polecenie cmdlet wywołuje metodę określoną dla każdego wystąpienia, które zostało zwrócone przez zapytanie.

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

Filtrowanie na IPEnabled=True jest konieczne, ponieważ nawet w sieci, która używa tylko protokołu TCP/IP, niektóre konfiguracje adapterów sieciowych na komputerze nie są prawdziwymi adapterami TCP/IP. są to ogólne komponenty oprogramowania, które obsługują RAS, VPN, QoS i inne usługi dla wszystkich kart sieciowych, dlatego nie mają własnego adresu IP.

Wykonywanie zadań konfiguracji DHCP

Modyfikowanie szczegółów DHCP wymaga pracy z zestawem kart sieciowych, podobnie jak konfiguracja DNS. Istnieje kilka odrębnych akcji, które można wykonać przy użyciu usługi WMI.

Znajdowanie adapterów z włączoną obsługą DHCP

Aby znaleźć karty obsługujące protokół DHCP na komputerze, użyj następującego polecenia:

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

Aby wykluczyć karty z problemami z konfiguracją adresu IP, można pobrać tylko karty z obsługą adresów IP:

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

Pobieranie właściwości PROTOKOŁU DHCP

Ponieważ właściwości związane z DHCP dla adaptera zwykle zaczynają się od DHCP, można użyć parametru właściwości Format-Table, aby wyświetlić tylko te właściwości.

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

Włączanie DHCP na każdym adapterze

Aby włączyć DHCP na wszystkich adapterach, użyj następującego polecenia:

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

Użycie instrukcji filtru IPEnabled=True and DHCPEnabled=False zapobiega włączaniu protokołu DHCP tam, gdzie jest już włączony.

Zwalnianie i odnawianie dzierżaw DHCP na określonych kartach sieciowych

Wystąpienia klasy Win32_NetworkAdapterConfiguration mają metody ReleaseDHCPLease i RenewDHCPLease. Oba są używane w taki sam sposób. Ogólnie rzecz biorąc, użyj tych metod, jeśli potrzebujesz tylko zwolnić lub odnowić adresy dla adaptera w określonej podsieci. Najprostszym sposobem filtrowania adapterów w podsieci jest wybranie jedynie konfiguracji używających bramy dla tej podsieci. Na przykład, następujące polecenie zwalnia wszystkie dzierżawy DHCP na adapterach na komputerze lokalnym, które uzyskują dzierżawy DHCP od 192.168.1.254:

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

Jedyną zmianą odnowienia dzierżawy DHCP jest użycie metody RenewDHCPLease zamiast metody ReleaseDHCPLease:

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

Notatka

W przypadku korzystania z tych metod na komputerze zdalnym należy pamiętać, że można utracić dostęp do systemu zdalnego, jeśli połączenie z nim jest realizowane przez adapter, w którym wydano lub odnowiono dzierżawę.

Zwalnianie i odnawianie dzierżaw DHCP na wszystkich kartach sieciowych

Globalne zwalnianie lub odnawianie adresów DHCP można wykonywać na wszystkich adapterach sieciowych, korzystając z metod Win32_NetworkAdapterConfiguration, ReleaseDHCPLeaseAll i RenewDHCPLeaseAll. Jednak polecenie musi mieć zastosowanie do klasy WMI, a nie do konkretnego adaptera, ponieważ zwalnianie i odnawianie dzierżaw jest wykonywane globalnie na poziomie klasy, a nie na poziomie konkretnego adaptera. Polecenie cmdlet Invoke-CimMethod może wywołać metody klasy.

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll

Możesz użyć tego samego formatu polecenia, aby wywołać metodę RenewDHCPLeaseAll:

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll

Tworzenie udziału sieciowego

Aby utworzyć udział sieciowy, użyj metody Create klasy Win32_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'
}

Jest to odpowiednik następującego polecenia net share w systemie Windows:

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

Aby wywołać metodę klasy WMI, która przyjmuje parametry, musisz wiedzieć, jakie parametry są dostępne i typy tych parametrów. Można na przykład wyświetlić listę metod Win32_Class za pomocą następujących poleceń:

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

Użyj następującego polecenia, aby wyświetlić listę parametrów metody Create.

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

Możesz również zapoznać się z dokumentacją metody Create klasy Win32_Share.

Usuwanie udziału sieciowego

Udział sieciowy można usunąć za pomocą Win32_Share, ale proces różni się nieco od tworzenia udziału, ponieważ trzeba pobrać konkretne wystąpienie, które ma zostać usunięte, a nie całą klasę Win32_Share. Poniższy przykład usuwa udział TempShare:

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

Łączenie dysku sieciowego dostępnego z systemem Windows

Polecenie cmdlet New-PSDrive może utworzyć dysk programu PowerShell zamapowany na udział sieciowy.

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

Jednak dyski utworzone w ten sposób są dostępne tylko dla sesji programu PowerShell, w której są tworzone. Aby zamapować dysk, który jest dostępny poza PowerShell (lub w innych sesjach PowerShell), należy użyć parametru Persist.

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

Notatka

Trwałe zamapowane dyski mogą nie być dostępne w przypadku uruchamiania w kontekście z podwyższonymi uprawnieniami. Jest to domyślne zachowanie kontroli konta użytkownika systemu Windows. Aby uzyskać więcej informacji, zobacz następujący artykuł: