Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ł: