29 April 2009

Bahasa Scripting Windows PowerShell (Bagian 6)

Berhubungan dengan Jaringan
TCP/IP sudah sangat banyak digunakan dalam dunia jaringan dan merupakan protokol jaringan yang paling umum. Akses jaringan pada bahasan berikut akan menggunakan
WMI.

Mendapatkan Alamat IP
Perintah berikut akan mendapatkan daftar dari alamat IP yang digunakan oleh komputer.
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property IPAddress





Output dari perintah diatas adalah alamat IP yang diapit tanda kurung kurawal. Ini disebabkan output tersebut mempunyai tipe array. Property IPAddress untuk tiap kartu jaringan sebenarnya merupakan array. Nilai-nilai dari array ini bisa kita dapatkan dengan menggunakan Select-Object ExpandProperty.
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -ExpandProperty IPAddress




Untuk menampilkan data konfigurasi IP untuk tiap kartu jaringan, dapat menggunakan perintah berikut.
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName .
Tampilan default untuk perintah diatas tidak lengkap untuk kondisi tertentu. Untuk mendapatkan informasi lebih detail, kita dapat menggunakan Select-Object untuk “memaksa” lebih banyak property yang akan ditampilkan.
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]*
Perintah diatas akan menampilkan informasi detail tentang DHCP, DNS, routing dan konfigurasi IP lainnya.

Ping Komputer
Kita dapat melakukan ping terhadap komputer dengan menggunakan Win32_PingStatus. Perintah berikut akan melakukan ping ke komputer lokal dengan output yang panjang.
Get-WmiObject -Class Win32_PingStatus -Filter "Address='127.0.0.1'" -ComputerName .
Kita dapat mendapatkan informasi yang lebih berguna dan mendekati output standar layaknya kita melakukan ping dengan hanya menampilkan property Address, BufferSize, ResponseTime, dan StatusCode.
Get-WmiObject -Class Win32_PingStatus -Filter "Address='127.0.0.1'" -ComputerName . | Select-Object -Property Address,BufferSize,ResponseTime,StatusCode



StatusCode yang berisi 0 berarti ping sukses. Kita dapat melakukan ping lebih dari satu kali dengan menggunakan ForEach-Object.
1..4 | ForEach-Object {Get-WmiObject -Class Win32_PingStatus -Filter "Address='127.0.0.1'" -ComputerName .} | Select-Object -Property Address,BufferSize,ResponseTime,StatusCode
Dengan cara diatas kita akan melakukan ping sebanyak 4 kali.

Bekerja dengan File dan Direktori

Dalam lingkungan Windows tentu kita sering berhubungan dengan file dan direktori. Apalagi dalam Windows PowerShell yang mirip dengan UNIX. Akses terhadap sebagian besar elemen pada Windows layaknya kita mengakses sebuah file. Pada bagian ini kita akan membahas bagaimana manipulasi terhadap file dan direktori dengan menggunakan cmdlet yang telah disediakan.

Menampilkan Isi Direktori
Tentu kita tahu cmdlet Get-ChildItem yang sering menjadi contoh pada beberapa posting sebelumnya. Cmdlet ini mirip dengan perintah dir pada command shell tradisional, yaitu mendapatkan isi dari direktori. Misalnya kita ingin mendapatkan isi dari drive C:\ termasuk file yang di sembunyikan (hidden). Kita bisa lakukan dengan memberikan parameter Force.
Get-ChildItem -Force C:\
Bisa juga kita melihat semua isi dari direktori dari drive C:\ beserta dengan isi dari direktori-direktori yang berada didalam drive C:\. Dengan menambahkan parameter -Recurse, kita bisa melakukan proses ini. Perhatian proses ini dapat memakan waktu yang sangat lama, karena banyaknya file yang ditampilkan. Untuk keluar dari proses ini sebelum berakhir, tekan tombol Ctrl+C.
Get-ChildItem -Force C:\ -Recurse

Menyalin File dan Direktori
Prosedur untuk menyalin file atau direktori dapat diselesaikan dengan cmdlet Copy-Item, yang mirip dengan perintah copy pada command shell tradisional. Perintah copy merupakan alias untuk cmdlet Copy-Item pada Windows PowerShell. Misalnya kita ingin menyalin file dari C:\a.txt ke C:\tes\a2.txt.
Copy-Item -Path C:\a.txt -Destination C:\a2.txt
Jika file tujuan sudah ada, maka proses penyalinan file gagal. Untuk menumpuki file jika sudah ada dapat menggunakan parameter Force.
Copy-Item -Path C:\a.txt -Destination C:\a2.txt -Force
Proses penyalinan direktori dapat dilakukan dengan cara yang sama seperti penyalinan file. Perintah berikut akan menyalin direktori C:\asal berserta isinya ke direktori C:\tujuan.
Copy-Item -Path C:\asal -Recurse -Destination C:\tujuan
Atau bisa juga menyalin sebagian item yang dibatasi oleh kondisi dengan parameter Filter.
Copy-Item -Filter *.txt -Path C:\asal -Recurse -Destination C:\tujuan

Membuat atau Menghapus File dan Direktori
Membuat file dapat dilakukan dengan cmdlet New-Item. Pembuatan file dan direktori dibedakan dengan menyertakan parameter ItemType yang berupa “directory” atau “file”. Untuk membuat direktori baru:
New-Item -Path ‘C:\dir baru’ -ItemType “directory”
Atau membuat file baru:
New-Item -Path ‘C:\dir baru\a.txt’ -ItemType “file”
Menghapus file bisa dilakukan dengan cmdlet Remove-Item. Ini berlaku untuk file maupun direktori.
Remove-Item C:\tes




Berikan parameter Recurse jika tidak ingin ditanya untuk tiap item yang dihapus.
Remove-Item C:\tes -Recurse

1 komentar: