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: