Wykonywanie zadań w sieci

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 ExpandProperty , Select-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

Get-Member Za pomocą polecenia cmdlet można zobaczyć, ż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ść IPAddress dla każdej karty sieciowej jest w rzeczywistości tablicą. Nawiasy klamrowe w definicji wskazują, że wartość IPAddress nie jest wartością System.String, ale tablicą wartości System.String.

Wyświetlanie listy 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ślnym wyświetlaniem obiektu konfiguracji karty sieciowej jest bardzo ograniczony zestaw dostępnych informacji. W celu szczegółowej inspekcji i rozwiązywania problemów użyj Select-Object polecenia cmdlet formatowania, takiego jak Format-List, aby określić właściwości, które mają być wyświetlane.

W nowoczesnych sieciach TCP/IP prawdopodobnie nie interesuje Cię właściwości IPX lub WINS. Możesz użyć parametru ExcludeProperty polecenia , Select-Object aby ukryć właściwości z nazwami rozpoczynającymi 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 właściwościach konfiguracji pomocniczych adresów 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'"

Bardziej przydatny formularz do informacji podsumowania wyświetlanych właściwości Address, ResponseTime i StatusCode wygenerowanych za pomocą następującego polecenia. Parametr Autosize zmienia Format-Table rozmiar kolumn tabeli tak, aby były 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 pomyślne polecenie 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 polecenia 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. Pełne polecenie ping podsieci można wykonać przez dodanie każdej wartości w zakresie do adresu częściowego w instrukcji 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 SetDNSDomain Win32_NetworkAdapterConfiguration. Parametr Query parametru Invoke-CimMethod przyjmuje ciąg zapytania WQL. Polecenie cmdlet wywołuje metodę określoną w każdym wystąpieniu zwróconym przez zapytanie.

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

Filtrowanie jest IPEnabled=True konieczne, ponieważ nawet w sieci, która używa tylko protokołu TCP/IP, kilka konfiguracji karty sieciowej na komputerze nie są prawdziwe karty TCP/IP. są to ogólne elementy oprogramowania obsługujące RAS, VPN, QoS i inne usługi dla wszystkich kart, a tym samym nie mają własnego adresu.

Wykonywanie zadań konfiguracji DHCP

Modyfikowanie szczegółów dhcp obejmuje pracę 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 kart z obsługą protokołu 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 protokołem DHCP dla karty zazwyczaj zaczynają się od DHCP, można użyć parametru Format-Table Property polecenia , 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 protokołu DHCP na każdej karcie

Aby włączyć protokół DHCP na wszystkich kartach, 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 IPEnabled=True and DHCPEnabled=False filter pozwala uniknąć włączania protokołu DHCP, w którym jest już włączona.

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

Wystąpienia klasy Win32_NetworkAdapterConfiguration mają ReleaseDHCPLease metody 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 karty w określonej podsieci. Najprostszym sposobem filtrowania kart sieciowych w podsieci jest wybranie tylko konfiguracji kart, które używają bramy dla tej podsieci. Na przykład następujące polecenie zwalnia wszystkie dzierżawy DHCP na kartach 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ą odnawiania dzierżawy DHCP jest użycie RenewDHCPLease metody zamiast ReleaseDHCPLease metody :

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

Uwaga

W przypadku korzystania z tych metod na komputerze zdalnym należy pamiętać, że można utracić dostęp do systemu zdalnego, jeśli jest połączony z nim za pośrednictwem karty z zwolnioną lub odnowioną dzierżawą.

Zwalnianie i odnawianie dzierżaw DHCP na wszystkich kartach

Globalne wydania adresów DHCP lub odnowienia można wykonywać na wszystkich kartach przy użyciu metod ReleaseDHCPLeaseAll Win32_NetworkAdapterConfiguration i RenewDHCPLeaseAll. Jednak polecenie musi mieć zastosowanie do klasy WMI, a nie określonej karty, ponieważ zwalnianie i odnawianie dzierżaw globalnie jest wykonywane na klasie, a nie na określonej karcie. Polecenie Invoke-CimMethod cmdlet może wywoływać 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 Create metody 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 net share polecenia 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 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}

Możesz również przeczytać dokumentację dotyczącą metody Create klasy Win32_Share.

Usuwanie udziału sieciowego

Możesz usunąć udział sieciowy z Win32_Share, ale proces jest nieco inny niż tworzenie udziału, ponieważ należy pobrać określone wystąpienie do usunięcia, a nie klasę Win32_Share . Poniższy przykład usuwa udział TempShare:

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

Połączenie dostępnego dla systemu Windows dysku sieciowego

Polecenie New-PSDrive cmdlet 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 dostępny poza programem PowerShell (lub do innych sesji programu PowerShell), należy użyć parametru Persist .

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

Uwaga

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