Apakah Windows PowerShell sekuat terminal Unix / Linux? [Tutup]

43

Apakah Windows PowerShell sekuat dan seefisien Linux ' terminal?

Orang offline memberi tahu saya, tanpa menjelaskan banyak hal, bahwa Windows PowerShell adalah upaya untuk membuat administrator Unix merasa lebih nyaman menggunakan Windows. Tapi saya kira, mereka akan nyaman hanya jika memiliki (atau hampir) efisiensi yang sama.

lelaki yg tdk terpelajar
sumber
3
Itu sulit dijawab, karena tidak ada shell Linux. Ada banyak shell yang biasa digunakan di Linux (atau umumnya sistem * nix). Yang paling banyak digunakan adalah bash, jadi Anda mungkin ingin bertanya tentang hal itu. <br> Juga "kuat" sangat berdasarkan pendapat.
Kritzefitz
7
People offline tell me ... that Windows Powershell is an attempt to make UNIX administrators feel more comfortable using Windows.Orang-orang itu tidak menggunakan Unix atau Powershell.
surfasb
Saya akan mengatakan bahwa PowerShell adalah pengakuan dari beberapa area Microsoft bahwa mereka mengacaukan dengan tidak memiliki cangkang kuat yang tersedia. Sama sekali tidak menyalin gaya UNIX. Untuk mengenal PS, Anda sebaiknya memahami sedikit tentang cara kerja Windows dan cara kerja .NET.
Julian Knight
BTW, Microsoft memang memiliki BASH shell yang tersedia yang merupakan bagian dari alat migrasi yang seharusnya membantu orang pindah dari UNIX ke Windows Server.
Julian Knight
1
Saya seorang fanboy Unix lama yang lebih suka Unix daripada Windows dalam banyak hal; Namun, PowerShell mengalahkan bash hands down karena satu objek pipa memiliki pasangan kunci / nilai dan bukan teks murni. Ini membuatnya lebih mirip dalam desain dengan jQuery daripada bash.
Mario

Jawaban:

54

Nah, masalah pertama Anda adalah Anda membandingkan shell (PowerShell) dengan terminal. Di Linux, terminal adalah sesuatu yang mengirim dan menerima I / O berbasis karakter dan diasumsikan memiliki pengguna interaktif di belakangnya (dengan kata lain, itu adalah aplikasi GUI yang dulu berisi shell). Salah satu cangkang yang paling umum dijalankan dalam Terminal Ubuntu adalah Bash , tetapi ada yang lain.

Orang offline memberi tahu saya, tanpa menjelaskan banyak hal, bahwa Windows PowerShell adalah upaya untuk membuat administrator Unix merasa lebih nyaman menggunakan Windows.

Sungguh, hal yang benar untuk dikatakan adalah bahwa PowerShell adalah Windows yang mengekspos banyak model objek WMI , COM dan .NET dalam lingkungan baris perintah yang interaktif dan skrip - dan bahwa lingkungan baris perintah ini terus meminjam banyak konsep - seperti pipa dan I / O redirection - dari shell Unix, seperti DOS lama (2.0 dan lebih tinggi) command.comdan cmd.exelakukan. Pipeline bekerja dengan objek di PowerShell. Anda dapat melakukan hal-hal seperti membuat HTML dan mungkin spreadsheet Excel dengan cepat jika Anda cukup tahu. Ini tentu saja merupakan upgrade / penggantian dari cmd.exeshell lama yang tidak banyak berubah dari Windows NT 4.0 .

Mengenai sintaks, ini kurang seperti shell Unix (meskipun akhirnya tidak ada cmdlet yang digunakan /sebagai indikator saklar atau parameter), tetapi ada banyak alias untuk perintah Unix klasik - seperti memasukkan lsdi jendela PowerShell akan bekerja seperti dir. Tapi ini hanya alias ("Get-Alias" daftar ini?).

Mengenai kemampuan PowerShell, Anda benar-benar memiliki kemampuan yang sama, secara skrip-satunya, dari VBScript dan CScript - meskipun keduanya .NET.

Satu hal yang tidak harus dilakukan oleh orang-orang Unix ketika menggunakan Bash sebagian besar waktu adalah menjadi akrab dengan programmer atau objek model objek yang mungkin sangat rumit, yang diperlukan untuk banyak tugas PowerShell canggih dan sederhana. Tetapi ini hanya mungkin karena ada konvensi yang jelas tentang output teks langsung untuk banyak perintah POSIX standar . Windows tidak memiliki tradisi ini - sepertinya Anda lebih suka menggunakan mmckonsol untuk tugas administrasi, dengan perintah yang ditambahkan di sana-sini selama bertahun-tahun. Selain itu, banyak terkenal utilitas Unix yang kompleks dan membutuhkan beberapa studi sebelum digunakan - rsync, wget, dan banyak lainnya. Efisiensi mungkin merupakan fungsi dari seberapa baik seseorang mengetahui alat yang mereka gunakan lebih dari apa pun.

LawrenceC
sumber
8
+1 untuk menyebutkan bahwa PowerShell memaparkan .NET ke konsol & sebagai host skrip. Itu memperlihatkan kekuatan banyak perpustakaan Windows utama untuk digunakan dalam skrip. Kasus penggunaan antara keduanya mungkin serupa, gayanya sama sekali berbeda.
Julian Knight
3
+1 untuk menyebutkan bahwa terminal berisi shell. Saya telah menggunakan Windows dan Linux untuk waktu yang lama tetapi tidak pernah ada yang menyatakan perbedaannya dengan jelas.
Tyler Collier
26

Windows PowerShell dan Unix shell adalah dua hal yang berbeda dengan kelebihan di keduanya.

Unix (shell) memiliki filosofi bahwa semuanya adalah file. Input dan output dari perintah Unix dapat diakses seperti file. Ini membuat perintah chaining sangat sederhana dan menggunakan kembali output dari satu perintah oleh yang lain adalah kekuatan shell Unix.

Dengan Windows PowerShell, sejauh yang saya tahu, semuanya adalah objek. Anda bisa meneruskan hasil perintah ke yang lain sebagai objek. Ini bisa sangat kuat, tetapi tidak memiliki konsep Unix yang sederhana.

Saya tidak percaya bahwa PowerShell seefisien shell Unix, tetapi yang lain percaya itu.

Tetapi perbandingannya bisa diperdebatkan, karena Windows bukan sistem * nix, sehingga konsep * nix tidak berlaku. Dibandingkan dengan MS-DOS , PowerShell adalah peningkatan besar.

Biapy
sumber
3
Semuanya adalah file tidak ada hubungannya dengan shell, itu adalah hal kernel.
terdon
3
Benar, tetapi ini berdampak pada bagaimana shell unix dirancang.
Biapy
@terdon: Itu benar, tetapi shell bekerja dengan baik dengan ini. Karena itu masih shell yang mengenali simbol suka |, <atau >.
Kritzefitz
1
Orang-orang terus berbicara tentang benda-benda ini di PowerShell. Digunakan hanya untuk cmd.exe dan bash (atau cangkang lain), dapatkah Anda menguraikannya, mungkin dengan contoh sederhana?
Luc
5
Tanpa mengirim Anda jauh dari halaman ini - ketika Anda menyambungkan hal-hal dalam sistem * nix di sisi kanan pipa Anda mengharapkan teks sederhana, misalnya --- sejarah | grep cp --- hanya akan mengembalikan baris yang berisi cp. Di sisi lain ketika pipelining hal-hal di PS di sisi kanan Anda mendapatkan objek, dengan properti, seperti ini --- Get-History | Di mana-Obyek {$ _. CommandLine -eq "cp"} --- $ _ adalah masing-masing objek, CommandLine adalah properti, -eq sama dengan dan akhirnya string cp.
Tidak diketahui