Melakukan tugas jaringan

Sampel ini hanya berlaku untuk platform Windows.

Karena TCP/IP adalah protokol jaringan yang paling umum digunakan, sebagian besar tugas administrasi protokol jaringan tingkat rendah melibatkan TCP/IP. Di bagian ini, kami menggunakan PowerShell dan WMI untuk melakukan tugas-tugas ini.

Mencantumkan alamat IP untuk komputer

Untuk mendapatkan semua alamat IP yang digunakan di komputer lokal, gunakan perintah berikut:

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

Karena properti IPAddress dari objek Win32_NetworkAdapterConfiguration adalah array, Anda harus menggunakan parameter Select-Object ExpandProperty untuk melihat seluruh daftar alamat.

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 Dengan menggunakan cmdlet, Anda dapat melihat bahwa properti IPAddress adalah array:

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

Properti IPAddress untuk setiap adaptor jaringan sebenarnya adalah array. Kurung kurawal dalam definisi menunjukkan bahwa IPAddress bukan nilai System.String , tetapi array nilai System.String .

Mencantumkan data konfigurasi IP

Untuk menampilkan data konfigurasi IP terperinci untuk setiap adaptor jaringan, gunakan perintah berikut:

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

Tampilan default untuk objek konfigurasi adaptor jaringan adalah kumpulan informasi yang tersedia yang sangat berkurang. Untuk inspeksi dan pemecahan masalah mendalam, gunakan Select-Object atau cmdlet pemformatan, seperti Format-List, untuk menentukan properti yang akan ditampilkan.

Dalam jaringan TCP/IP modern, Anda mungkin tidak tertarik dengan properti IPX atau WINS. Anda dapat menggunakan parameter ExcludeProperty untuk Select-Object menyembunyikan properti dengan nama yang dimulai dengan "WINS" atau "IPX".

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

Perintah ini mengembalikan informasi terperinci tentang DHCP, DNS, perutean, dan properti konfigurasi IP minor lainnya.

Komputer Pinging

Anda dapat melakukan ping sederhana terhadap komputer menggunakan dengan Win32_PingStatus. Perintah berikut melakukan ping, tetapi mengembalikan output panjang:

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

Formulir yang lebih berguna untuk informasi ringkasan tampilan properti Alamat, ResponseTime, dan StatusCode, seperti yang dihasilkan oleh perintah berikut. Parameter Ukuran otomatisFormat-Table mengubah ukuran kolom tabel sehingga ditampilkan dengan benar di 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

StatusCode 0 menunjukkan ping yang berhasil.

Anda dapat menggunakan array untuk melakukan ping beberapa komputer dengan satu perintah. Karena ada lebih dari satu alamat, gunakan ForEach-Object untuk melakukan ping setiap alamat secara terpisah:

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

Anda dapat menggunakan format perintah yang sama untuk melakukan ping semua alamat pada subnet, seperti jaringan privat yang menggunakan nomor jaringan 192.168.1.0 dan masker subnet Kelas C standar (255.255.255.0)., Hanya alamat dalam rentang 192.168.1.1 hingga 192.168.1.254 yang merupakan alamat lokal yang sah (0 selalu dicadangkan untuk nomor jaringan dan 255 adalah alamat siaran subnet).

Untuk mewakili array angka dari 1 hingga 254 di PowerShell, gunakan ekspresi 1..254. Ping subnet lengkap dapat dilakukan dengan menambahkan setiap nilai dalam rentang ke alamat parsial dalam pernyataan ping:

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

Perhatikan bahwa teknik ini untuk menghasilkan berbagai alamat juga dapat digunakan di tempat lain. Anda dapat menghasilkan sekumpulan alamat lengkap dengan cara ini:

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

Mengambil properti adaptor jaringan

Sebelumnya, kami menyebutkan bahwa Anda dapat mengambil properti konfigurasi umum menggunakan kelas Win32_NetworkAdapterConfiguration . Meskipun tidak benar-benar informasi TCP/IP, informasi adaptor jaringan seperti alamat MAC dan jenis adaptor dapat berguna untuk memahami apa yang terjadi dengan komputer. Untuk mendapatkan ringkasan informasi ini, gunakan perintah berikut:

Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .

Menetapkan domain DNS untuk adaptor jaringan

Untuk menetapkan domain DNS untuk resolusi nama otomatis, gunakan metode SetDNSDomain dari Win32_NetworkAdapterConfiguration. Parameter Kueri mengambil Invoke-CimMethod string kueri WQL. Cmdlet memanggil metode yang ditentukan pada setiap instans yang dikembalikan oleh kueri.

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

Pemfilteran IPEnabled=True pada diperlukan, karena bahkan pada jaringan yang hanya menggunakan TCP/IP, beberapa konfigurasi adaptor jaringan pada komputer bukan adaptor TCP/IP yang sebenarnya. mereka adalah elemen perangkat lunak umum yang mendukung RAS, VPN, QoS, dan layanan lainnya untuk semua adaptor dan dengan demikian tidak memiliki alamatnya sendiri.

Melakukan tugas konfigurasi DHCP

Memodifikasi detail DHCP melibatkan bekerja dengan sekumpulan adaptor jaringan, seperti halnya konfigurasi DNS. Ada beberapa tindakan berbeda yang dapat Anda lakukan menggunakan WMI.

Menemukan adaptor dengan dukungan DHCP

Untuk menemukan adaptor yang diaktifkan DHCP di komputer, gunakan perintah berikut:

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

Untuk mengecualikan adaptor dengan masalah konfigurasi IP, Anda hanya dapat mengambil adaptor berkemampuan IP:

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

Mengambil properti DHCP

Karena properti terkait DHCP untuk adaptor umumnya dimulai dengan DHCP, Anda dapat menggunakan parameter Format-Table Properti untuk hanya menampilkan properti tersebut:

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

Mengaktifkan DHCP pada setiap adaptor

Untuk mengaktifkan DHCP pada semua adaptor, gunakan perintah berikut:

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

Menggunakan pernyataan IPEnabled=True and DHCPEnabled=False filter menghindari pengaktifan DHCP tempat pernyataan tersebut sudah diaktifkan.

Merilis dan memperbarui sewa DHCP pada adaptor tertentu

Instans kelas Win32_NetworkAdapterConfiguration memiliki ReleaseDHCPLease metode dan RenewDHCPLease . Keduanya digunakan dengan cara yang sama. Secara umum, gunakan metode ini jika Anda hanya perlu merilis atau memperbarui alamat untuk adaptor pada subnet tertentu. Cara termampu untuk memfilter adaptor pada subnet adalah dengan memilih hanya konfigurasi adaptor yang menggunakan gateway untuk subnet tersebut. Misalnya, perintah berikut merilis semua sewa DHCP pada adaptor di komputer lokal yang mendapatkan sewa DHCP dari 192.168.1.254:

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

Satu-satunya perubahan untuk memperbarui sewa DHCP adalah menggunakan RenewDHCPLease metode alih-alih ReleaseDHCPLease metode :

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

Catatan

Saat menggunakan metode ini di komputer jarak jauh, ketahuilah bahwa Anda dapat kehilangan akses ke sistem jarak jauh jika Anda terhubung ke dalamnya melalui adaptor dengan sewa yang dirilis atau diperbarui.

Merilis dan memperbarui sewa DHCP pada semua adaptor

Anda dapat melakukan rilis alamat DHCP global atau perpanjangan pada semua adaptor dengan menggunakan metode Win32_NetworkAdapterConfiguration , ReleaseDHCPLeaseAll dan RenewDHCPLeaseAll. Namun, perintah harus berlaku untuk kelas WMI, bukan adaptor tertentu, karena melepaskan dan memperbarui sewa secara global dilakukan pada kelas , bukan pada adaptor tertentu. Invoke-CimMethod Cmdlet dapat memanggil metode kelas.

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll

Anda dapat menggunakan format perintah yang sama untuk memanggil metode RenewDHCPLeaseAll :

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll

Membuat berbagi jaringan

Untuk membuat berbagi jaringan, gunakan Create metode 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'
}

Ini setara dengan perintah berikut net share di Windows:

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

Untuk memanggil metode kelas WMI yang mengambil parameter, Anda harus mengetahui parameter apa yang tersedia dan jenis parameter tersebut. Misalnya, Anda dapat mencantumkan metode Win32_Class dengan perintah berikut:

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

Gunakan perintah berikut untuk mencantumkan Create parameter metode .

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

Anda juga dapat membaca dokumentasi untuk Membuat metode kelas Win32_Share .

Menghapus berbagi jaringan

Anda dapat menghapus berbagi jaringan dengan Win32_Share, tetapi prosesnya sedikit berbeda dari membuat berbagi, karena Anda perlu mengambil instans tertentu untuk dihapus, bukan kelas Win32_Share . Contoh berikut menghapus berbagi TempShare:

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

Koneksi drive jaringan yang dapat diakses Windows

New-PSDrive Cmdlet dapat membuat drive PowerShell yang dipetakan ke berbagi jaringan.

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

Namun, drive yang dibuat dengan cara ini hanya tersedia untuk sesi PowerShell tempat drive dibuat. Untuk memetakan drive yang tersedia di luar PowerShell (atau ke sesi PowerShell lainnya), Anda harus menggunakan parameter Persist .

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

Catatan

Drive yang dipetakan secara terus-menerus mungkin tidak tersedia saat berjalan dalam konteks yang ditinggikan. Ini adalah perilaku default Windows UAC. Untuk informasi selengkapnya, baca artikel berikut: