PowerShell sangat mirip dengan shell Unix. PowerShell memiliki alias untuk banyak perintah yang biasa Anda gunakan di Unix, seperti ls, rm, cp, mv, dll. Namun, cara cmdlet di belakang alias bekerja sangat berbeda.
Dalam shell * nix, semuanya berbasis teks, jadi output dari satu perintah dapat disalurkan ke perintah lain, tetapi program penerima harus tahu cara mem-parsing / menginterpretasikan teks dari pipeline. Ini adalah perbedaan utama antara PowerShell dan * nix shells ... di PowerShell, semua yang dilewatkan adalah objek.
Konsekuensi dari ini adalah bahwa pemipaan dari satu perintah ke perintah lain tidak hanya pemipaan stdout ke stdin. Ini memipakan objek .net penuh ke penerima. Oleh karena itu, penerima hanya perlu tahu cara menangani objek jenis itu. Itu tidak perlu menerapkan penguraian teks, tetapi perlu memahami cara memanggil metode dan properti (anggota) dari objek input.
Dalam program baris perintah * nix, Anda akan menulis kode yang membaca dari stdin dan mem-parsing informasinya dari teks yang dihasilkan program lain. Di PowerShell, Anda akan melakukan sesuatu seperti ini:
function changeName($myObject)
{
if ($myObject.GetType() -eq [MyType])
{
#print the current name to screen
$myObject.Name
#change string in the 'name' property
$myObject.Name = "NewName"
}
return $myObject
}
Memanggil kode ini di baris perintah mungkin terlihat seperti:
PS> $myObject = New-Object MyType -arg "OriginalName"
PS> $myObject = changeName $myNewObject
OriginalName
PS> $myObject.Name
NewName
Anda juga bisa melakukan hal yang sama seperti di atas menggunakan mekanisme perpipaan, tetapi Anda dapat melihat perbedaan utama di sini karena kami melewati objek dan bukan teks:
PS> $myObject = New-Object MyType -arg "OriginalName" | changeName
OriginalName
PS> $myObject.Name
NewName
Melupakan perbedaan utama ini, saya akan mengatakan ada kesamaan dangkal lainnya, tetapi sebagian besar hanya secara sintaksis. Sintaks PowerShell tampaknya telah dirancang dengan mempertimbangkan pengguna shell * nix, sehingga banyak gaya bahasa yang serupa.