Memakai PowerShell Bawaan Windows


Shell berbasis CLI yang sangat terkenal di Windows adalah Command Prompt. Shell yang dulunya dikenal sebagai MS-DOS Prompt ini dapat dipakai untuk mengerjakan perintah DOS seperti dir, cd, del dan sebagainya. DOS sudah lama punah. Oleh sebab itu, Windows juga dilengkapi dengan shell yang lebih canggih yang disebut sebagai Windows PowerShell. Windows 7 sudah dilengkapi dengan PowerShell 2, Windows 8 dilengkapi PowerShell 3 dan Windows 8.1 dilengkapi PowerShell 4. Walaupun demikian, tampaknya popularitas Command Prompt tidak akan dapat digeser oleh PowerShell.

Pada kesempatan ini, saya akan mencoba memakai beberapa perintah PowerShell. Untuk membuka shell tersebut, saya men-klik Start Menu, memilih All Programs, Accessories, Windows PowerShell dan men-klik icon Windows PowerShell. Saya kemudian dapat memberikan perintah PowerShell seperti yang terlihat pada gambar berikut ini:

Memakai PowerShell

Memakai PowerShell

Terlihat bahwa saya dapat memberikan dir dan cd seperti pada Command Prompt. Bedanya, pada PowerShell, segala sesuatunya adalah object (memiliki method dan properties). Perintah yang paling umum yang diberikan di PowerShell berada dalam bentuk cmdlet. Berbeda dengan perintah Command Prompt yang bersifat statis, cmdlet di-implementasi-kan dalam bentuk class .NET yang dapat ditambahkan oleh pengguna atau pihak ketiga.

Perintah dir dan cd yang saya pakai sebenarnya hanya sebuah alias ke cmdlet Get-ChildItem dan Set-Location. Untuk membuktikannya, saya dapat memberikan perintah Get-Alias seperti yang terlihat pada gambar berikut ini:

Memakai PowerShell

Memakai PowerShell

Jadi, perintah dir yang saya berikan sama saja dengan memanggil Cmdlet Get-ChildItem.

Pada Command Prompt, saya dapat men-format output dari dir dengan memberikan argumen seperti dir/w, dir/p dan sebagainya. Lalu bagaimana dengan PowerShell? Saya dapat menggunakan pipe operator yang merujuk ke Cmdlet dengan verb Format seperti Format-Wide seperti yang terlihat pada contoh berikut ini:

Memakai PowerShell

Memakai PowerShell

Sebagai contoh lainnya, saya dapat menggunakan Get-ChildItem untuk menampilkan seluruh file JAR yang ada di direktori dan subdirectori saat ini seperti yang terlihat pada gambar berikut ini:

Memakai PowerShell

Memakai PowerShell

Contoh lainnya, saya dapat menampilkan file JAR yang diurutkan berdasarkan ukuran file dari yang terbesar hingga terkecil, seperti yang terlihat pada gambar berikut ini:

Memakai PowerShell

Memakai PowerShell

Salah satu hal menarik yang saya suka dari PowerShell adalah Cmdlet Out-GridView yang dapat menampilkan object dalam bentuk tabel GUI. Sebagai contoh, saya dapat menampilkan hasil Get-ChildItem dalam bentuk GUI dengan menggunakan perintah seperti yang terlihat pada gambar berikut ini:

Memakai PowerShell

Memakai PowerShell

Selain itu, saya juga dapat mengisi argumen untuk sebuah Cmdlet melalui GUI dengan menggunakan Show-Command seperti pada gambar berikut ini:

Memakai PowerShell

Memakai PowerShell

Segala sesuatu yang diproses dalam PowerShell adalah objek. Untuk melihat property dan method yang dihasilkan, saya dapat menggunakan Get-Member seperti:

PS C:\simple-jpa-demo-inventory> Get-ChildItem | Get-Member


   TypeName: System.IO.DirectoryInfo

Name                      MemberType     Definition
----                      ----------     ----------
Mode                      CodeProperty   System.String Mode{get=Mode;}
Create                    Method         void Create(), void Create(System.Security.AccessControl.DirectorySecurity ...
CreateObjRef              Method         System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType)
CreateSubdirectory        Method         System.IO.DirectoryInfo CreateSubdirectory(string path), System.IO.Director...
Delete                    Method         void Delete(), void Delete(bool recursive)
EnumerateDirectories      Method         System.Collections.Generic.IEnumerable[System.IO.DirectoryInfo] EnumerateDi...
EnumerateFiles            Method         System.Collections.Generic.IEnumerable[System.IO.FileInfo] EnumerateFiles()...
EnumerateFileSystemInfos  Method         System.Collections.Generic.IEnumerable[System.IO.FileSystemInfo] EnumerateF...
Equals                    Method         bool Equals(System.Object obj)
GetAccessControl          Method         System.Security.AccessControl.DirectorySecurity GetAccessControl(), System....
GetDirectories            Method         System.IO.DirectoryInfo[] GetDirectories(), System.IO.DirectoryInfo[] GetDi...
GetFiles                  Method         System.IO.FileInfo[] GetFiles(string searchPattern), System.IO.FileInfo[] G...
GetFileSystemInfos        Method         System.IO.FileSystemInfo[] GetFileSystemInfos(string searchPattern), System...
GetHashCode               Method         int GetHashCode()
GetLifetimeService        Method         System.Object GetLifetimeService()
GetObjectData             Method         void GetObjectData(System.Runtime.Serialization.SerializationInfo info, Sys...
GetType                   Method         type GetType()
...

   TypeName: System.IO.FileInfo

Name                      MemberType     Definition
----                      ----------     ----------
Mode                      CodeProperty   System.String Mode{get=Mode;}
AppendText                Method         System.IO.StreamWriter AppendText()
CopyTo                    Method         System.IO.FileInfo CopyTo(string destFileName), System.IO.FileInfo CopyTo(s...
Create                    Method         System.IO.FileStream Create()
CreateObjRef              Method         System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType)
CreateText                Method         System.IO.StreamWriter CreateText()
Decrypt                   Method         void Decrypt()
Delete                    Method         void Delete()
...

Cmdlet Get-ChildItem pada perintah di atas akan mengembalikan array yang berisi System.IO.DirectoryInfo dan/atau System.IO.FileInfo.

Get-ChildItem tidak hanya dipakai untuk mengakses file system, tapi juga layanan yang ditawarkan oleh provider lainnya dalam bentuk analogi drive dan file. Untuk melihat apa saja provider yang tersedia, saya dapat menggunakan Get-PSProvider seperti pada contoh berikut ini:

PS C:\> Get-PSProvider

Name                 Capabilities                                      Drives
----                 ------------                                      ------
Alias                ShouldProcess                                     {Alias}
Environment          ShouldProcess                                     {Env}
FileSystem           Filter, ShouldProcess, Credentials                {C}
Function             ShouldProcess                                     {Function}
Registry             ShouldProcess, Transactions                       {HKLM, HKCU}
Variable             ShouldProcess                                     {Variable}

Sampai disini, yang saya akses adalah file dan direktori yang disediakan oleh FileSystem provider. Provider yang berbeda akan menawarkan drive yang berbeda. Untuk melihat apa saja yang dapat dipakai sebagai drive, saya dapat menggunakan Get-PSDrive seperti pada contoh berikut ini:

PS C:\simple-jpa-demo-inventory> Get-PSDrive

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
Alias                                  Alias
C                1165,11        917,46 FileSystem    C:\                                      simple-jpa-demo-inventory
Cert                                   Certificate   \
D                                      FileSystem    D:\
Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
Variable                               Variable
WSMan                                  WSMan

Sebagai contoh, saya dapat membaca isi registry dengan perintah seperti pada gambar berikut ini:

Memakai PowerShell

Memakai PowerShell

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: