Apakah PowerShell siap mengganti shell Cygwin saya di Windows? [Tutup]

384

Saya berdebat apakah saya harus belajar PowerShell, atau hanya tetap dengan skrip Cygwin / Perl / skrip shell Unix, dll.

Keuntungan dari PowerShell adalah skrip dapat lebih mudah digunakan oleh rekan tim yang tidak memiliki Cygwin; Namun, saya tidak tahu apakah saya benar-benar akan menulis banyak skrip tujuan umum, atau apakah orang akan menggunakannya.

Script Unix sangat kuat, apakah PowerShell cukup dekat untuk menjamin pengalihan?

Berikut adalah beberapa hal spesifik (atau yang setara) yang akan saya cari di PowerShell:

  • grep
  • menyortir
  • uniq
  • Perl (seberapa dekat PowerShell dengan kemampuan Perl?)
  • AWK
  • sed
  • file (perintah yang memberikan informasi file)
  • dll.
Andy White
sumber
7
Saya tidak akan mengatakan itu, saya tertarik untuk mengambil Powershell, menemukan halaman ini, dan sekarang saya tahu perbedaan umum antara PS dan skrip shell yang saya gunakan.
Bender the Greatest
5
Posting ini tiba-tiba naik dari abu dalam pengiriman tautan HN. Kerja bagus. Dan buruk bagi @ Bobby untuk menutup ini karena tidak konstruktif.
Sid
26
Jika seseorang tidak dapat bertanya seberapa baik satu alat mereplikasi fungsi yang lain maka SO tidak dapat menjawab pertanyaan perbandingan alat. Ini adalah kata-kata yang hati-hati untuk menghindari kontroversi tetapi ceroboh dianggap "kontroversial" hanya karena terlihat seperti pertanyaan Unix vs Windows. Dan itu mendapat jawaban faktual, obyektif, dengan wawasan faktual tambahan tentang bagaimana membantu Unix scripting di Windows.
chernevik
16
Mengapa ini ditutup lagi? Seseorang tolong edit judul untuk mengatakan "PowerShell vs Unix Shells pada Platform Windows" untuk menjauhkan para troll dari memperlakukannya sebagai "Windows vs Unix," yang bukan. Ini adalah pertanyaan yang sangat konstruktif - dipilih untuk dibuka kembali.
x0n
3
Op sedang mencampur shell dengan alat. PowerShell sudah digunakan. Tetapi GNU adalah proyek untuk membawa barang UNIX secara bebas ke OS lain, termasuk Windows. Setiap hal dalam daftar op memiliki implementasi gnu di Windows. Dapat diakses dari GnuWin32 atau situs individual. Windows BAT tidak berguna, ia memiliki pengalihan dan pipa dan kondisi.
MeaCulpa

Jawaban:

783

Alat hanyalah alat.
Mereka membantu atau tidak.
Anda butuh bantuan atau tidak.

Jika Anda tahu Unix dan alat-alat itu melakukan apa yang perlu Anda lakukan pada Windows - maka Anda adalah pria yang bahagia dan tidak perlu mempelajari PowerShell (kecuali jika Anda ingin menjelajah).

Maksud asli saya adalah memasukkan seperangkat alat Unix di Windows dan menyelesaikannya (beberapa dari kami di tim memiliki latar belakang Unix yang dalam dan dosis rasa hormat yang sehat untuk komunitas itu.)

Apa yang saya temukan adalah bahwa ini tidak banyak membantu. Alasannya adalah bahwa AWK / grep / sed tidak bekerja melawan COM , WMI , ADSI , Registry, toko sertifikat, dll., Dll.

Dengan kata lain, UNIX adalah seluruh ekosistem yang disetel sendiri di sekitar file teks. Dengan demikian, alat pemrosesan teks adalah alat manajemen yang efektif. Windows adalah ekosistem yang sepenuhnya disetel sendiri di sekitar API dan Objek. Itu sebabnya kami menemukan PowerShell.

Apa yang saya pikir akan Anda temukan adalah bahwa akan ada banyak kesempatan ketika pemrosesan teks tidak akan memberikan apa yang Anda inginkan di Windows. Pada titik itu, Anda ingin mengambil PowerShell. CATATAN - ini bukan kesepakatan semua atau tidak sama sekali. Di dalam PowerShell, Anda dapat memanggil alat Unix Anda (dan menggunakan proses teks mereka atau pemrosesan teks PowerShell). Anda juga dapat memanggil PowerShell dari alat Unix Anda dan mendapatkan teks.

Sekali lagi - tidak ada agama di sini - fokus kami adalah memberi Anda alat yang Anda butuhkan untuk berhasil. Itu sebabnya kami sangat bersemangat tentang umpan balik. Beri tahu kami di mana kami jatuh pada pekerjaan atau di mana Anda tidak memiliki alat yang Anda butuhkan dan kami akan meletakkannya di daftar dan sampai ke sana.

Dalam semua kejujuran, kami menggali diri dari lubang 30 tahun, jadi itu akan memakan waktu. Yang mengatakan, jika Anda mengambil beta Windows Server 2008 / R2 dan / atau beta dari produk server kami, saya pikir Anda akan terkejut melihat seberapa cepat lubang itu diisi.

Sehubungan dengan penggunaan - kami memiliki> 3,5 juta unduhan hingga saat ini. Itu tidak termasuk orang yang menggunakannya di Windows Server 2008, karena itu termasuk sebagai komponen opsional dan tidak perlu diunduh.

V2 akan dikirimkan di semua versi Windows. Ini akan menjadi on-by-default untuk semua edisi kecuali Server inti di mana itu adalah komponen opsional. Tidak lama setelah Windows 7 / Windows Server 2008 R2 dikirimkan, kami akan menyediakan V2 di semua platform, Windows XP dan di atasnya. Dengan kata lain - investasi Anda dalam pembelajaran akan berlaku untuk sejumlah besar mesin / lingkungan.

Satu komentar terakhir. Jika / ketika Anda mulai belajar PowerShell, saya pikir Anda akan cukup senang. Sebagian besar desain sangat dipengaruhi oleh latar belakang Unix kami, jadi sementara kami sangat berbeda, Anda akan mengambilnya dengan sangat cepat (setelah Anda selesai mengutuk bahwa itu bukan Unix :-)).

Kami tahu bahwa orang memiliki anggaran yang sangat terbatas untuk belajar - itulah sebabnya kami sangat keras tentang konsistensi. Anda akan belajar sesuatu, dan kemudian Anda akan menggunakannya berulang kali.

Percobaan! Nikmati! Mengikutsertakan!

Jeffrey Snover - MSFT
sumber
11
Terima kasih atas jawaban anda. Saya pikir saya akan melanjutkan dan belajar PowerShell. Terlihat kuat dari apa yang saya lihat sejauh ini, dan saya akan dapat menulis skrip yang lebih berguna dengan itu di tempat kerja.
Andy White
55
@ Jeffrey: apakah ada peluang untuk terminal yang lebih baik untuk Windows? Powershell adalah bahasa scripting yang kuat, tetapi kenyataan itu berjalan di cmd.exe membuatnya jauh lebih nyaman dalam mode interaktif
sumek
47
Pertanyaan "tidak konstruktif" ini menghasilkan wawasan terbaik yang pernah saya lihat dalam keseluruhan "pada Unix everything is a file" mantra, dan mengapa Windows berbeda. Mungkin StackOverflow akan lebih baik melayani penutupan bukan diskusi yang konstruktif ?
chernevik
12
@sumek - Cobalah ConEmu; Saya telah menggunakannya selama beberapa minggu dan itu cukup manis: hanselman.com/blog/...
EZ Hart
4
Kepala: PowerShell tidak suka memipipkan data biner. Jadi berhati-hatilah saat Anda memanggil alat Unix tepercaya Anda, jangan lakukan hal-hal seperti tar -c . | gzip > package.tar.gz langsung di PowerShell, atau Anda akan menderita. Lihat brianreiter.org/2010/01/29/…
Interarticle
123

grep

Select-Stringcmdlet dan -matchoperator bekerja dengan regex. Anda juga dapat langsung menggunakan dukungan regex .NET untuk fungsionalitas yang lebih canggih.

menyortir

Sort-Objectlebih kuat (daripada yang saya ingat * nix sort). Mengizinkan penyortiran multi-level pada ekspresi sewenang-wenang. Di sini pemeliharaan PowerShell untuk tipe yang mendasarinya membantu; misalnya DateTimeproperti akan diurutkan sebagai DateTimetanpa harus memastikan pemformatan ke dalam format yang dapat diurutkan.

uniq

Select-Object -Unique

Perl (seberapa dekat PowerShell dengan kemampuan Perl?)

Dalam hal luasnya Perl dari perpustakaan dukungan khusus domain: tidak ada tempat (belum).

Untuk pemrograman umum, PowerShell tentu saja lebih kohesif dan konsisten, dan lebih mudah diperluas. Satu celah untuk teks hijauing adalah sesuatu yang setara dengan ..operator Perl .

AWK

Sudah cukup lama sejak menggunakan AWK (harus> 18 tahun, sejak kemudian saya hanya menggunakan Perl), jadi saya tidak bisa berkomentar.

sed

[Lihat di atas]

file (perintah yang memberikan informasi file)

Kekuatan PowerShell di sini tidak jauh dari apa yang dapat dilakukannya dengan objek sistem file (dan mendapat informasi lengkap di sini, dirpengembalian FileInfoatau FolderInfoobjek yang sesuai) adalah model keseluruhan penyedia.

Anda dapat memperlakukan registri, toko sertifikat, SQL Server, cache RSS Internet Explorer, dll. Sebagai ruang objek yang dapat dinavigasi oleh cmdlet yang sama dengan sistem file.


PowerShell jelas merupakan langkah maju di Windows. Microsoft telah menjadikannya bagian dari persyaratan mereka untuk produk non-rumah di masa depan. Oleh karena itu kaya dukungan di Exchange, dukungan dalam SQL Server. Ini hanya akan berkembang.

Contoh terbaru dari ini adalah TFS PowerToys. Banyak operasi klien TFS dilakukan tanpa harus memulai tf.exe setiap kali (yang memerlukan koneksi server TFS baru, dll.) Dan terutama lebih mudah untuk kemudian memproses data lebih lanjut. Selain memungkinkan akses luas ke seluruh API klien TFS ke detail yang lebih besar daripada yang terekspos di Team Explorer TF.exe.

Richard
sumber
2
Masalahnya adalah bahwa model penyedia menarik hanya karena OS tidak menggunakan teks sebagai media konfigurasi universal, sehingga Anda MEMBUTUHKAN penyedia ini. Dengan UNIX sebagian besar bahasa memiliki API untuk menyentuh PAM, host, dan paket, tetapi pada akhirnya teks akan selalu ada.
Daishiman
12
Teks tidak selalu merupakan format terbaik untuk semuanya (mulai dengan basis data dan gambar raster). Tapi saya pikir kita bisa setuju untuk tidak setuju daripada perang format terbuka.
Richard
5
Powershell dapat menggunakan objek apa pun dalam kerangka .NET, bukankah ini cocok dengan kemampuan domain Perl? Plus, Anda dapat menulis cmdlet dalam C # dll. Jika Anda ingin menggunakan kembali
Chris S
Perbandingan poin demi poin. Bagus Ini harus menjadi jawaban yang diterima. Kekuatan PowerShell terletak pada yayasan .NET dan seberapa mudah Anda dapat memperluas sistem dengan menulis Cmdlet baru atau bahkan memanggil perpustakaan kelas
Sau001
Penggunaan khas sed (saya pikir) sed 's/pattern/replacement/' fileadalah:, yang kira-kira gc file | %{$_ -replace 'pattern','replacement'}, dan juga untuk awk: awk 'BEGIN {} /pat1/ {action1} /pat2/ {action2} END {}' filekira{BEGIN {}; switch -r -c -file file { 'pat1' {action1} 'pat2' {action2}}; END{};}
Nathan Chappell
56

Sebagai seseorang yang kariernya berfokus pada pengembangan perusahaan Windows dari tahun 1997 - 2010, jawaban yang jelas adalah PowerShell untuk semua alasan bagus yang diberikan sebelumnya (misalnya, itu adalah bagian dari strategi perusahaan Microsoft; ia terintegrasi dengan baik dengan Windows / COM / .NET; dan menggunakan objek alih-alih file menyediakan model pengkodean "lebih kaya"). Untuk alasan itu saya telah menggunakan dan mempromosikan PowerShell selama dua tahun terakhir, dengan keyakinan bahwa saya mengikuti "Kata-kata Bill."

Namun, sebagai seorang pragmatis, saya tidak lagi yakin PowerShell adalah jawaban yang hebat. Meskipun ini adalah alat Windows yang sangat baik dan menyediakan langkah yang sangat dibutuhkan untuk mengisi lubang bersejarah yang merupakan baris perintah Window, karena kita semua melihat cengkeraman Microsoft pada slip komputasi konsumen, tampaknya semakin mungkin bahwa Microsoft memiliki pertempuran besar ke depan untuk mempertahankan OS-nya sebagai penting bagi perusahaan masa depan.

Memang, mengingat saya menemukan pekerjaan saya semakin dalam lingkungan yang heterogen, saya merasa jauh lebih berguna untuk menggunakan skrip Bash saat ini, karena mereka tidak hanya bekerja di Linux, Solaris dan Mac OS X, tetapi mereka juga bekerja — dengan bantuan Cygwin — di Windows.

Jadi, jika Anda meyakini bahwa masa depan OS dikomodifikasi daripada dimonopoli, maka tampaknya masuk akal untuk memilih strategi alat pengembangan tangkas yang menjauhkan diri dari alat berpemilik yang layak. Namun jika Anda melihat masa depan Anda didominasi oleh semua-itu-Redmond maka pergi untuk PowerShell.

Ubiguchi
sumber
1
Apakah skrip unix bekerja dengan sempurna di Cygwin-Windows tanpa kesalahan?
Pacerier
@Pacerier Saya telah menggunakan Cygwin dan MinGW selama 12 tahun, dan memiliki masalah yang sangat jarang. Yang penting adalah bahwa jika sesuatu tidak berfungsi, selalu mungkin untuk kembali ke alat Windows, atau apa pun - proses dapat dimulai dengan cara yang sama seperti shell lain memulai mereka.
Evgeni Sergeev
4
Oke, jawaban Anda dari 2011. Powerhell hari ini berjalan di linux juga. Dan - pendapat pribadi saya - pesta terlalu antik. Sintaksnya mengerikan dan saya lebih suka menggunakan bahasa scripting yang berbeda. Saat ini dengan python menjadi standar pada kebanyakan distro linux saya tidak melihat alasan untuk menggunakan bash untuk skrip. Saya akan menyarankan Anda untuk memeriksa PowerShell lagi karena telah banyak terjadi sejak 2011.
itmuckel
33

Saya telah menggunakan sedikit PowerShell untuk otomatisasi skrip. Meskipun sangat bagus bahwa lingkungan tampaknya telah dipikirkan lebih dari kerang Unix, dalam praktiknya penggunaan objek bukan aliran teks jauh lebih kikuk, dan banyak fasilitas Unix yang telah dikembangkan dalam 30 terakhir tahun masih hilang.

Cygwin masih lingkungan skrip pilihan saya untuk host Windows. Ini tentu mengalahkan alternatif dalam hal menyelesaikan sesuatu.

Daishiman
sumber
27
Menggunakan objek adalah perubahan paradigma dan perlu membiasakan diri. Tetapi hindari seluruh penguraian ulang pada setiap langkah di mana data terstruktur terlibat (mis. Tidak perlu memastikan bidang dibatasi).
Richard
16
@Andy White @Daishiman, saya bisa mengerti di mana ada kurva belajar dengan PowerShell, tetapi objek perpipaan bisa jauh lebih fleksibel daripada teks perpipaan. @ Richard benar. :)
Steven Murawski
18
Pembuat mobil mengalami kesulitan berdebat dengan 1000+ tahun kuda juga. Saya tidak mencoba untuk menjadi kurang ajar. Hanya menunjukkan bahwa keberhasilan masa lalu tidak menghilangkan potensi manfaat inovasi.
EBGreen
12
@daishiman - Manfaat Objects adalah ketika Anda menginginkan properti, Anda memintanya - Anda tidak perlu menguraikan, menebak, melempar. Saya tidak mengerti maksud Anda tentang "apa yang terjadi ketika objek tidak memiliki metode yang kompatibel" - Bisakah Anda mengatakannya dengan cara lain atau memberikan contoh masalah? Terima kasih.
Jeffrey Snover - MSFT
13
@Daishiman - Saya mengerti. Dalam praktiknya orang menemukan ini bukan masalah melainkan keuntungan besar. Yang mengatakan, saya bisa melihat bahwa jika Anda adalah parser teks ahli, ini akan menjadi keterampilan baru untuk dipelajari dan mungkin terasa tidak dibutuhkan dan canggung pada awalnya. Sekali lagi - apa pun yang membantu adalah alat yang tepat.
Jeffrey Snover - MSFT
15

Ada banyak jawaban yang bagus di sini, dan ini adalah pendapat saya. PowerShell siap jika Anda ... Contoh:

grep = " Select-String -Pattern "

sort = "Sort-Object"

uniq = " Dapatkan-Unik "

file = " Dapatkan-Barang "

cat = " Dapatkan Konten "

Perl / AWK / Sed bukan perintah, tetapi utilitas karenanya sulit untuk dibandingkan, tetapi Anda dapat melakukan hampir semua hal di PowerShell.

Vic
sumber
2
Bisakah Anda percaya perintah empat huruf samar yang dipaksa digunakan nenek moyang kita?
Evgeni Sergeev
4
@EvgeniSergeev Semua di atas tersedia secara default sebagai sls, sort, gu, gi, gc, masing-masing. Nama panjang yang dapat dibaca yang dilengkapi dengan tab, dan nama yang dapat diketik dalam satu sistem. Itu kemajuan yang ramah pengguna untuk Anda.
TessellatingHeckler
Salah satu alias untuk Get-Contentitu cat, jadi untuk yang itu tidak ada perbedaan antara Cygwin / Unix dan PowerShell. Sayangnya, dalam sebagian besar kasus, dokumentasi Microsoft untuk cmdlet tidak memiliki informasi tentang alias, tetapi daftar semua alias dihasilkan dengan menggunakanGet-Alias sesi PowerShell. Alias ​​untuk "Get-Unique" adalah "gu", jadi itu lebih pendek daripada yang Cygwin / Unix!
Peter Mortensen
13

Saya baru saja mulai mencoba-coba PowerShell dengan tingkat keseriusan. Meskipun selama tujuh tahun terakhir saya telah bekerja di lingkungan berbasis Windows yang hampir secara eksklusif, saya berasal dari latar belakang Unix dan mendapati diri saya terus-menerus mencoba "Unix-fy" pengalaman interaksi saya di Windows. Sangat frustasi untuk sedikitnya.

Wajar untuk membandingkan PowerShell dengan sesuatu seperti Bash , tcsh , atau zsh karena utilitas seperti grep , sed , awk , find , dll. Bukan merupakan bagian dari shell; mereka akan selalu menjadi bagian dari lingkungan Unix. Yang mengatakan, perintah PowerShell seperti Pilih-String memiliki fungsi yang sangat mirip dengan grep dan yang dibundel sebagai modul inti dalam PowerShell ... sehingga garis dapat sedikit sebuah kabur.

Saya pikir kuncinya adalah budaya , dan fakta bahwa masing-masing perangkat akan mewujudkan budaya masing-masing:

  • Unix adalah budaya berbasis teks, berbasis file (secara umum, non Unicode) . File konfigurasi hampir secara eksklusif adalah file teks . Windows, di sisi lain selalu jauh lebih terstruktur dalam hal format konfigurasi - konfigurasi umumnya disimpan dalam database berpemilik (misalnya, registri Windows) yang memerlukan alat khusus untuk manajemennya.
  • Antarmuka administratif Unix (dan, selama bertahun-tahun, pengembangan) secara tradisional menjadi baris perintah dan terminal virtual. Windows dimulai sebagai GUI dan fungsi administrasi baru-baru ini mulai menjauh dari menjadi berbasis GUI secara eksklusif . Kita bisa berharap pengalaman Unix di baris perintah menjadi lebih kaya, lebih matang mengingat keunggulan signifikan yang dimilikinya di PowerShell, dan pengalaman saya cocok dengan ini. Tentang ini, dalam pengalaman saya:

    • Pengalaman administrasi Unix diarahkan untuk membuat hal-hal mudah dilakukan dalam jumlah minimal stroke kunci; ini mungkin sebagai akibat dari situasi historis keharusan mengelola server melalui koneksi dial-up 9600 baud yang lambat. Sekarang PowerShell memang memiliki alias yang harus melalui standar Verb-Noun yang agak bertele - tele , tetapi mengenal alias itu sedikit menyusahkan (ada yang tahu sesuatu yang lebih baik daripada alias | where {$_.ResolvedCommandName -eq "<command>"}:?).

      Contoh cara kaya di mana sejarah dapat dimanipulasi:

      iptablesperintah sering bertele-tele dan mengulanginya dengan sedikit perbedaan akan menyebalkan jika bukan karena salah satu dari banyak fitur manipulasi sejarah yang dibangun di dalam Bash , jadi memasukkan aturan iptables seperti berikut:

      iptables -I camera-1-internet -s 192.168.0.50 -m state --state NEW -j ACCEPT

      kedua kalinya untuk kamera lain (" camera-2"), hanya merupakan kasus penerbitan:

      !!:s/-1-/-2-/:s/50/51

      yang berarti "melakukan perintah sebelumnya, tetapi gantikan -1-dengan -2-dan 50dengan 51.

    • Pengalaman Unix dioptimalkan untuk pengetik sentuh; seseorang dapat melakukan banyak hal tanpa meninggalkan posisi "rumah". Sebagai contoh, di Bash , menggunakan binding kunci Emacs (ya, Bash juga mendukung vi binding), bersepeda melalui sejarah dilakukan dengan menggunakan Ctrl-Pdan Ctrl-Nsementara bergerak ke awal dan akhir garis dilakukan dengan menggunakan masing Ctrl-A- Ctrl-Emasing ... dan itu pasti tidak berakhir di situ. Coba bahkan navigasi yang paling sederhana di konsol PowerShell tanpa berpindah dari posisi awal dan Anda dalam masalah.

    • Hal-hal sederhana seperti paging serba guna (a la less ) di Unix tampaknya tidak tersedia di luar kotak di PowerShell yang sedikit membuat frustrasi, dan pengalaman editor yang kaya juga tidak ada. Tentu saja, orang selalu dapat mengunduh alat pihak ketiga yang akan mengisi kekosongan itu, tetapi tentu akan menyenangkan jika hal-hal ini hanya "ada" seperti mereka memiliki banyak rasa Unix.
  • Budaya Windows, setidaknya dalam hal sistem API sebagian besar didorong oleh kerangka kerja pendukung, yaitu, COM dan .NET , keduanya-yang sangat terstruktur dan berbasis objek. Di sisi lain, akses ke Unix APIs secara tradisional telah melalui antarmuka file ( /devdan /proc) atau (tidak berorientasi objek) panggilan pustaka gaya C. Maka tidak mengherankan bahwa pengalaman scripting cocok dengan paradigma OS mereka masing-masing. PowerShell pada dasarnya terstruktur (semuanya adalah objek) dan berbasis file Bash -and-friends. API terstruktur yang tersedia bagi programmer PowerShell sangat luas (pada dasarnya cocok dengan luasnya set standar COM dan .NET interface).

Singkatnya, meskipun kemampuan scripting dari PowerShell bisa dibilang lebih kuat daripada Bash (terutama ketika Anda mempertimbangkan ketersediaan .NET BCL ), pengalaman interaktif secara signifikan lebih lemah, terutama jika Anda datang dari yang sepenuhnya menggunakan keyboard. , perspektif berbasis konsol (sebanyak Unix-head adalah).

Eric Smith
sumber
Anda bertanya "ada yang tahu tentang sesuatu yang lebih baik dari: alias | di mana {$ _. ResolvedCommandName -eq" <command> "}?". Bagaimana dengan adil alias -Definition *property(atau pola lainnya)? Saya pikir masalah dengan jawaban Anda adalah bahwa Anda mengkonfigurasi shell dan konsol: ingat Anda memiliki pilihan konsol dengan opsi pengeditan yang berbeda. Mereka sengaja membiarkan pengeditan konsol DOS rusak untuk mendorong orang menggunakan konsol lain seperti ISE.
Duncan
BTW, !!contoh Anda dapat ditulis dalam Powershell (h -c 1) -replace '-1-','-2-' -replace '50','51' | iextetapi lebih mudah untuk panah atas dan mengedit untuk satu perintah. Jika Anda ingin melakukannya di banyak perintah saya pikir Powershell akan menang. Untuk mengulangi 10 perintah yang berakhir pada perintah # 255 dengan suntingan Anda: (h -c 10 -id 255) -replace '-1-','-2-' -replace '50','51' | iexJuga sejarah Powershell memungkinkan Anda melakukan hal-hal yang belum pernah terjadi di shell Linux; jika Anda bertanya-tanya secara retrospektif berapa lama sebuah perintah harus dijalankan:h -id 20 | select { $_.EndExecutionTime - $_.StartExecutionTime }
Duncan
@Duncan Sehubungan dengan komentar Anda kembali shell dan konsol - saya pikir itu hanya perbedaan mendasar antara Bash dan PS; yaitu: Bash berharap untuk memberikan pengalaman interaktif tertentu sedangkan PS "membiarkan" itu untuk sesuatu yang lain. Saya tidak memiliki banyak pengalaman dengan konsol ISE, tetapi dari saya bisa ingat, itu tidak memiliki pengalaman interaktif yang sangat kaya juga.
Eric Smith
@Duncan, ya - poin bagus tentang kemampuan PS untuk memberikan sehubungan dengan trik sejarah yang cerdas.
Eric Smith
@Duncan ... tetapi terlepas dari pernyataan Anda bahwa beberapa hal belum pernah terjadi di shell Linux:fc -e "sed -i -e 's/-1-/-2-/g' -e 's/50/51/g'" 10 255
Eric Smith
8

Saya bukan pengguna PowerShell yang sangat berpengalaman dengan cara apa pun, tetapi sedikit saja yang membuat saya terpesona sangat mengesankan. Anda dapat menyatukan cmdlet bawaan untuk melakukan apa saja yang dapat Anda lakukan di prompt Unix, dan ada beberapa kebaikan tambahan untuk melakukan hal-hal seperti mengekspor ke CSV, tabel HTML, dan untuk jenis pekerjaan administrasi sistem yang lebih mendalam. .

Dan jika Anda benar-benar membutuhkan sesuatu seperti sed , selalu ada UnixUtils atau GnuWin32 , yang dapat Anda integrasikan dengan PowerShell dengan cukup mudah.

Sebagai pengguna lama Unix, saya memiliki sedikit kesulitan membiasakan diri dengan skema penamaan perintah, dan saya pasti akan mendapat manfaat lebih dari itu jika saya tahu lebih banyak. NET.

Jadi pada dasarnya, saya katakan itu layak untuk dipelajari jika Windows-satunya-ness itu tidak menimbulkan masalah.

yalestar
sumber
1
Ada proyek open source "Pash" yang memungkinkan Anda menjalankan PowerShell di platform lain via Mono. tinyurl.com/6dyoso
John D. Cook
Wah! Terima kasih atas tipnya; Saya tidak sabar untuk mencobanya
yalestar
6

Jika Anda menyukai skrip shell, Anda akan menyukai PowerShell!

Mulai dari tur berpemandu Microsoft Command Shell (Ars Technica).

Nick
sumber
8
Saya suka shell scripting dan saya mentolerir PowerShell. Perintah dan sintaksinya mengerikan. Perintah dan opsi yang sangat panjang tanpa penyelesaian perintah yang berguna. Atau jika ada saya belum menemukannya. Terlalu banyak fitur dijejalkan ke dalam satu perintah yang harus dipisahkan. Variabel aneh dan lolos dari sintaks yang hanya bisa disukai oleh programmer batch DOS.
Zan Lynx
8
@ Zan Lynx - Anda benar karena tidak menemukan barang. Semua perintah memiliki alias, dan banyak dari mereka cocok dengan perintah DOS dan UNIX (ps, dir, rm, ls, kill, history, man, cat, clear dll.) Nama-nama itu panjang sehingga mereka memiliki nama yang bermakna. Sangat bagus untuk skrip - ini membantu ketika orang baru harus menggunakan dan memeliharanya. Ada ekspansi tab untuk cmdlet, fungsi, variabel, path, parameter dll. Sebagian besar sintaks berasal dari shell Unix dan sintaks escape apa yang Anda bicarakan? `` tidak digunakan untuk melarikan diri karena merupakan pemisah jalur di Windows.
manojlds
3
@Zan Lynx - Argumen Anda tidak valid. Untuk berhenti menafsirkan variabel, gunakan '(tanda kutip tunggal). Untuk hal tanda kutip ganda - sama, gunakan write-output 'this is a "test"'. Pertanyaan yang Anda tuju adalah untuk Regex dan melarikan diri untuk regex berlaku di mana-mana. Powershell juga memiliki string Here-Strings / verbatim. Bahkan Jawa tidak memiliki ini! Coba keluar dari regex di Jawa. Dan terkadang Anda tidak menggunakan literalpath. Anda gunakan saat Anda membutuhkannya. LiteralPath memperlakukan karakter wildcard kata demi kata dan tidak mengembangkannya. Anda menggunakannya ketika file Anda memilikinya. Ini memberi Anda lebih banyak opsi.
manojlds
3
@ manojlds: Dibandingkan dengan bash shell, Powershell penuh dengan inkonsistensi yang tidak masuk akal dan hanya membingungkan. Di bash, Anda menggunakan karakter pelarian yang sama di mana-mana dan jalur file diloloskan seperti halnya string. Anda tidak memerlukan parameter khusus untuk itu. Jika Anda memperluas variabel yang memiliki karakter khusus di dalamnya, Anda memasukkannya ke dalam tanda kutip ganda dan isinya aman, tidak perlu memanggil fungsi untuk menghindarinya kembali.
Zan Lynx
5
@ Zan Lynx - Tidak ada inkonsistensi. Bahkan write-output "this is a `"test`""bekerja. Cukup gunakan `alih-alih `\`. regex :: escape ada untuk membantu Anda sehingga Anda tidak ketinggalan barang melarikan diri. Tidak perlu menggunakannya. Anda berpikir bahwa opsi tambahan yang ada untuk membantu Anda dan mencegah kesalahan adalah inkonsistensi.
manojlds
6

Saat percobaan baru-baru ini membawa saya ke kedalaman panggilan PowerShell dan .NET, saya harus mengatakan bahwa PowerShell bisa menggantikan shell Cygwin dan Unix.

Saya tidak yakin tentang Perl, tetapi karena PowerShell dan Perl keduanya Turing lengkap sebagai bahasa pemrograman, saya memberikan ini sebagai ya untuk mengganti Perl juga.

Satu hal yang PowerShell miliki di atas Cygwin dan Bash biasa di bawah * nix, adalah kemampuannya untuk melakukan panggilan DLL berpasir, memanipulasi sistem operasi melalui panggilan API langsung, metode WMI dan bahkan objek COM. Bagaimana dengan meluncurkan Internet Explorer melalui kode, kemudian melakukan apa pun yang Anda inginkan dengan dokumen yang ditampilkan, secara efektif meniru back-end untuk server Web?

Bagaimana dengan mengumpulkan data dari server SQL dan penyedia data lainnya, menguraikannya dan mengekspor sebagai CSV, pesan email, teks dan sebenarnya semua format file yang ada dan yang tidak ada? (Dengan keterampilan yang tepat membuat file yang valid dari data yang diterima, tentu saja, tetapi CSV sudah tersedia).

Dan ada keamanan tambahan yang tersedia melalui cmdlet dan skrip yang ditandatangani, kebijakan grup, dan kebijakan eksekusi yang membantu mencegah kode berbahaya dari berjalan di sistem Anda bahkan jika Anda menjalankannya sebagai administrator.

Tentang perintah apa yang diterapkan - jawaban oleh Richard mencantumkannya dan kemampuan PowerShell untuk meniru fungsi mereka.

Tentang apakah PowerShell kuat untuk menjamin peralihan - ini lebih merupakan masalah pilihan pribadi, meskipun semakin banyak layanan Windows yang menyediakan cmdlet PowerShell untuk mengendalikannya, tidak menggunakan PowerShell dengan layanan ini dianggap sebagai penghalang. (Server Hyper-V adalah layanan utama tersebut, dan ia juga menyediakan kemampuan untuk melakukan lebih banyak dengan PowerShell cmdlet daripada dengan GUI!)

Mungkin jawaban ini terlambat lima tahun, tetapi tetap saja, jika seseorang melakukan tugas administratif atau skrip umum berbagai hal di Windows, mereka pasti harus mencoba memanfaatkan PowerShell untuk keperluan mereka.

Doa malam
sumber
6

Saat Anda membandingkan PowerShell dengan kombinasi Cygwin / Perl / Shell, ketahuilah bahwa PowerShell hanya mewakili bagian "Shell" dari kombinasi itu.

Namun Anda dapat menjalankan perintah apa pun dari PowerShell seperti yang Anda lakukan dari cmd.exe atau Cygwin. Itu tidak tidak kembali melaksanakan fungsi tertentu, dan hal ini tentunya tidak sebanding dengan Perl.

Ini "hanya" sebuah shell, tetapi itu membuat pemrograman lebih mudah menyediakan antarmuka yang nyaman ke alam semesta .NET.

Perlu diingat juga bahwa PowerShell membutuhkan Windows XP, Windows Server 2003 atau lebih tinggi, yang dapat menimbulkan masalah tergantung pada infrastruktur TI Anda.

Memperbarui:

Saya tidak tahu debat filosofis seperti apa yang akan saya jawab.

Saya memposting jawaban saya dalam konteks pertanyaan: Bandingkan PowerShell dengan Cygwin dan Perl dan Bash.

PowerShell adalah sebuah shell, karena ia tidak membuat perbedaan sintaksis antara perintah built-in, commandlets, fungsi pengguna, dan perintah eksternal (.exe, .bat, .cmd). Hanya memohon. Metode NET berbeda dengan menambahkan namespace atau objek dalam panggilan.

Programabilitasnya berasal dari .NET framework, bukan dari sesuatu yang spesifik dengan "bahasa" PowerShell.

Saya akan mengatakan saya percaya PowerShell adalah "bahasa scripting" segera setelah Bugzilla atau MediaWiki diimplementasikan sebagai skrip PowerShell yang berjalan di server web;)

Sampai saat itu, nikmati perbandingannya .

devio
sumber
Ya, saya kira ketika saya berbicara tentang Unix "shell" saya juga merujuk pada semua utilitas normal yang datang dengan Unix, seperti grep, awk, dll. Saya hanya ingin tahu apakah PowerShell menawarkan utilitas serupa di luar -kotak.
Andy White
3
Powershell bukan "hanya sebuah shell". Ini adalah bahasa scripting. Saya bertanya-tanya dalam hal apa itu tidak sebanding dengan perl? Saya akui itu tidak matang, tetapi di luar itu saya tidak melihat perbedaan.
EBGreen
@EBGreen, Apa maksudmu dengan komentar ini? Saya setuju bahwa bahasa shell atau scripting pada dasarnya serupa, tetapi saya bertanya-tanya lebih lanjut tentang kemampuan spesifik PowerShell vs bash / perl / bahasa shell / scripting unix lainnya.
Andy White
2
Powershell memiliki beragam fungsi yang sangat luas. Ini adalah - Shell interaktif, dapat disusun - Bahasa scripting interaktif yang kaya - Bahasa pemrograman Ini memiliki serangkaian fungsi utilitas OO & tesxt yang kaya (yaitu setara dengan grep / awk / etc) juga.
Jeffrey Snover - MSFT
1
@Andy - Saya mengerti Devio mengatakan bahwa PowerShell tidak sekuat Perl. Saya tidak percaya itu benar dan saya hanya bertanya-tanya mengapa dia pikir itu yang terjadi.
EBGreen
4

Cmdlet di PowerShell sangat bagus dan berfungsi dengan baik. Orientasi objek mereka sangat menarik bagi saya karena saya seorang pengembang Java / C #, tetapi itu sama sekali tidak lengkap. Karena berorientasi objek, itu terlewatkan pada banyak kematangan aliran teks dari set alat POSIX ( awkdansed untuk beberapa nama).

Jawaban terbaik yang saya temukan pada dilema mencintai teknik OO dan mencintai kedewasaan dalam alat POSIX adalah dengan menggunakan keduanya! Salah satu aspek hebat dari PowerShell adalah ia melakukan pekerjaan perpipaan yang bagus untuk stream standar. PowerShell secara default menggunakan pipa objek untuk mengangkut objeknya di sekitar. Ini bukan stream standar (standard out, standard error, dan standard in). Ketika PowerShell perlu meneruskan output ke proses standar yang tidak memiliki pipa objek, itu pertama-tama mengkonversi objek ke aliran teks. Karena melakukannya dengan sangat baik, PowerShell membuat tempat yang sangat baik untuk meng-host alat POSIX!

Perangkat POSIX terbaik adalah GnuWin32 . Butuh waktu lebih dari 5 detik untuk menginstal, tetapi ini sepadan dengan masalahnya, dan sejauh yang saya tahu, itu tidak mengubah sistem Anda (registri,c:\windows\* folder, dll.) Kecuali menyalin file ke direktori yang Anda tentukan. Ini sangat bagus karena jika Anda meletakkan alat di direktori bersama, banyak orang dapat mengaksesnya secara bersamaan.

Petunjuk Instalasi GnuWin32

Unduh dan jalankan exe (ini dari situs SourceForge ) dengan mengarahkannya ke direktori yang sesuai (saya akan menggunakan C:\bin). Ini akan membuat GetGnuWin32direktori di sana di mana Anda akan menjalankan download.bat, lalu install.bat(tanpa parameter), setelah itu, akan ada C:\bin\GetGnuWin32\gnuwin32\bindirektori yang merupakan folder paling berguna yang pernah ada di mesin Windows. Tambahkan direktori itu ke jalur Anda, dan Anda siap untuk pergi.

Kurban Tebusan Terbatas
sumber
4

TL; DR - Saya tidak membenci Windows atau PowerShell. Saya tidak bisa melakukan apa pun di Windows atau di PowerShell.


Saya pribadi masih menemukan PowerShell underwhelming di terbaik.

  • tab penyelesaian jalur direktori tidak bertambah, mengharuskan pengguna untuk memasukkan pemisah jalur setelah setiap penyelesaian nama.
  • Saya masih merasa seperti Windows bahkan tidak memiliki konsep lintasan atau apa lintasan itu, tanpa indikator rumah pengguna yang dapat diakses, ~/kekurangan beberapa@environment://somejibberish/%user_home%
  • NTFS masih berantakan dan sepertinya akan selalu begitu. Semoga berhasil menavigasi.

  • antarmuka cmd-esque, cmd.exe dinosaurus masih terlihat di PowerShell, EditTandai masih satu-satunya cara untuk menyalin informasi, dan menyalin hanya dalam bentuk blok persegi panjang ruang terminal terlihat. dan EditTandai masih satu-satunya cara untuk menempelkan string ke terminal.

  • Lukisan biru tidak membuatnya lebih menarik. Saya tidak keberatan pengembang Microsoft memiliki selera warna.

  • Windows selalu terbuka di sudut kiri atas layar. Untuk seseorang yang menggunakan bilah tugas vertikal ini sangat menjengkelkan, terutama mengingat bahwa bilah tugas Windows akan mencakup satu-satunya sudut jendela yang memberikan akses ke fungsionalitas salin / tempel.

Saya tidak dapat berbicara banyak dengan alasan alat yang disertakan oleh Windows. Menjadi bahwa ada seluruh rangkaian open-source, alat CLI berlisensi bebas, dan PowerShell kapal dengan, setahu saya, tidak satupun dari mereka yang benar-benar mengecewakan.

  • PowerShell wget mengambil argumen yang sepertinya tak tertandingi untuk GNU wget. Terima kasih, secercah harapan yang berguna-sia-sia.
  • PowerShell POSIX tidak kompatibel dengan Bash, khususnya && operator tidak ditangani, membuat perintah kondisional yang paling sederhana mengikuti bukan apa-apa.

Saya tidak kenal laki-laki; Saya mencobanya, saya benar-benar melakukannya; Saya masih mencoba untuk mencobanya dengan harapan bahwa lain kali saya membukanya akan menjadi kurang berguna. Saya tidak bisa melakukan apa pun di PowerShell, dan saya hampir tidak bisa melakukan hal-hal dengan proyek nyata untuk membawa alat GNU ke Windows.

MySysGit memberi saya dinosaurus cmd.exe prompt dengan beberapa alat GNU, dan itu masih sangat mengecewakan, tetapi pada akhirnya penyelesaian jalan berhasil. Dan perintah Git akan berjalan di Git Bash.

Mintty for MySysGit memberikan antarmuka Cygwin ke lingkungan mysysgit, membuat salin dan tempel sesuatu (pilih untuk menyalin (mouse), Shift+ Insuntuk menempel, seberapa modern ...). Namun, hal-hal sepertigit push rusak di Mintty.

Saya tidak bermaksud berteriak-teriak, tapi saya masih melihat masalah besar dengan kegunaan baris perintah pada Windows bahkan diberikan alat-alat seperti Cygwin.


PS: Hanya karena sesuatu dapat dilakukan di PowerShell, tidak membuatnya bisa digunakan . Kegunaan lebih dalam daripada kemampuan dan apa yang cenderung saya fokuskan saat mencoba menggunakan produk sebagai konsumen.

ThorSummoner
sumber
Aktifkan mode QuickEdit? Pilih dan tekan enter untuk menyalin, ctrl-v untuk menempel, tidak ada lagi Edit-> Tandai atau Edit-> Tempel. Sementara di preferensi, atur posisi Window dan hapus centang "biarkan jendela posisi sistem". Penyelesaian tab tidak hanya menyelesaikan jalur sistem file, itu juga melengkapi nama variabel, nama perintah, properti objek, Anda mungkin akan mengetik .atau [mengakses properti atau indeks, sehingga tidak bisa hanya menambahkan pemisah jalur di akhir. PowerShell mana yang wget, tepatnya? Yang PowerShell POSIX? Itu tidak mencoba membawa alat gnu ke Windows, atau menjadi btw yang kompatibel dengan bash.
TessellatingHeckler
Ya saya tahu itu tidak mencoba menjadi bash. Saya menahan diri untuk tidak mengatakannya di posting asli. Saya akan mengatakan w yang mendapatkan biner tetapi tidak ada perintah "yang" di shell daya :( saya tidak ingat di mana beli saya membaca daya Shell seharusnya kompatibel dengan POSIX
ThorSummoner
5
re: "tidak ada yang" -> (get-command wg*.exe).Path. Re: selesai bash dan baca - - leeholmes.com/blog/2012/09/13/… yang mengarah ke github.com/lzybkr/PSReadLine
TessellatingHeckler
2

Saya belum melihat bahwa PowerShell telah benar-benar lepas landas, setidaknya belum. Jadi mungkin tidak sepadan dengan upaya mempelajarinya kecuali orang-orang lain di tim Anda sudah mengetahuinya.

Untuk kesulitan Anda, Anda mungkin lebih baik dengan bahasa scripting yang orang lain bisa dapatkan, Perl seperti yang Anda sebutkan, atau orang lain seperti Ruby atau Python.

Saya pikir banyak hal tergantung pada apa yang perlu Anda lakukan. Secara pribadi saya telah menggunakan Python untuk skrip pribadi saya sendiri, tetapi saya tahu ketika saya mulai menulis sesuatu yang saya tidak akan pernah bisa meneruskannya - jadi saya mencoba untuk tidak melakukan sesuatu yang terlalu revolusioner.

greg
sumber
2

Kenapa tidak menggunakan keduanya? Panggil skrip PowerShell di Cygwin sama seperti skrip lain yang diartikan seperti Perl, dll.

Saya melakukan ini cukup sehingga saya menulis https://bitbucket.org/jbianchi/powershell untuk bungkus Bash untuk memanggil powershell.exe di Cygwin. Ini dapat digunakan sebagai shebang sebagai baris pertama skrip powershell.exe .ps1 (karena PowerShell juga menggunakan "#" sebagai komentar). Lihat https://bitbucket.org/jbianchi/powershell/wiki/Home untuk contohnya

johnnyB
sumber
1

Dalam beberapa baris, Cygwin dan PowerShell adalah alat yang berbeda namun jika Anda telah menginstal Cygwin Anda dapat menjalankan executable Cygwin dalam sesi PowerShell. Saya sudah terbiasa dengan PowerShell sehingga sekarang saya tidak lagi menggunakan grep, sort, awk, dll. Ada cukup banyak alternatif bawaan di PowerShell, dan jika tidak, Anda dapat menemukan cmdlet di luar sana.

Alat utama yang saya temukan adalah ssh.exe, tetapi dalam sesi PowerShell.

Ini bekerja dengan baik.

yaxzone
sumber
0

Saya menemukan pemrograman PowerShell tidak sepadan dengan usaha.

Saya memiliki beberapa tahun pengalaman dengan skrip shell di bawah Unix, tetapi saya merasa sangat sulit untuk melakukan banyak hal dengan PowerShell.

Sepertinya banyak fungsi mengharuskan Anda untuk menginterogasi Windows Management Interface dan mengeluarkan perintah seperti SQL untuk mendapatkan informasi yang Anda butuhkan.

Sebagai contoh, saya ingin menulis skrip untuk menghapus semua file dengan akhiran tertentu dari pohon direktori. Di bawah Unix, ini akan menjadi sederhana ...

find . -name \*.xyz -exec rm {} \;

Setelah beberapa jam bercengkerama dengan Scripting.FileSystemObjectdan WScript.Shellmengeluarkan "SELECT * FROM Win32_ShortcutFile WHERE Drive = '" & drive & "' AND Path = '" & searchFolder & "'", akhirnya saya menyerah dan menerima perintah Pencarian Windows Explorer dan lakukan saja secara manual. Mungkin ada beberapa cara untuk melakukan apa yang saya inginkan, tetapi saya tidak melihat sesuatu yang jelas dan semua contoh di situs MSDN sangat sepele sehingga tidak berharga.

EDIT Heh, tentu saja begitu saya menulis ini, saya mencari-cari lagi dan menemukan apa yang saya lewatkan: -recurseopsi untuk perintah hapus-item salah (terungkap jika Anda menggunakan get-help remove-item -detailed).

Saya telah mencoba "remove-item -filter '* .xyz' -recurse" dan itu tidak berhasil, jadi saya menyerah.

Ternyata Anda perlu menggunakan get-childitem -filter '*.xyz' -recurse | remove-item

TMN
sumber
16
Saya pikir Anda membingungkan Windows Scripting Host (WSH) dengan PowerShell. Mereka sama sekali berbeda.
Erik Funkenbusch
3
Sebagai contoh, jika Anda ingin menghapus semua file yang berakhiran .TMN Anda dapat mengeluarkan perintah ini get-childitem c: \ -include * .TMN -recurse | foreach ($ _) {remove-item $ _. fullname}
Erik Funkenbusch
@ Mystere: Saya mencoba ini, dan sepertinya tidak berhasil. Setelah beberapa alasan, tampaknya * .tmn adalah yang Anda butuhkan (bukan hanya .tmn)
redtuna
5
Saya tidak bisa tidak setuju dengan lebih hormat, dan saya sama sekali bukan orang Windows. Saya menemukan PS lebih mudah untuk skrip daripada bash. PS lebih konsisten. Dengan Bash, utilitas konsol apa pun yang Anda gunakan memiliki sintaks sendiri, dan perilaku unik, dan sintaks bash itu sendiri agak samar. PS jauh lebih tangguh dengan fitur bahasa seperti fungsi anonim, (scriptblock), validasi parameter, fungsi lanjutan, dll. Ditambah konsep modul untuk portabilitas dan banyak fitur lainnya. Meskipun demikian, alasan terbesar adalah hal yang selalu Anda dengar tentang PS, objek truf teks. Bash masih lebih cepat.
user2233949
0

PowerShell sangat kuat, lebih kuat daripada built-in standar shell Unix (tetapi hanya karena mencakup banyak fungsi yang biasanya dikupas untuk subprogram). Juga, pertimbangkan bahwa Anda dapat menulis applet dalam bahasa .NET apa pun, termasuk IronPython , IronRuby , PerlNet, dll. Atau Anda dapat memanggil perintah Cygwin dari PowerShell, mengabaikan semua fungsi tambahan dan itu akan bekerja sama dengan Bash, KornShell , atau terserah...

Erik Funkenbusch
sumber
Saya pikir Anda mungkin kehilangan tujuan desain kerang Unix. Bukan mengetuk PowerShell (ingin mempelajari lebih lanjut sendiri) tetapi Anda perlu memahami perkakas Unix untuk membuat pernyataan seperti itu.
Jé Queue
2
@ Xepoch - Tidak, saya pikir Anda kehilangan tujuan desain PowerShell. PowerShell dapat melakukan semua yang dapat dilakukan shell Unix dengan cara yang sama seperti yang mereka lakukan. Namun, kekuatan sebenarnya datang ketika Anda menggunakan sistem perpipaan objek PS daripada hanya mengurai output teks. Jadi, PowerShell dapat melakukan apa yang bisa dilakukan bash atau korn, tetapi mereka tidak bisa melakukan apa yang bisa dilakukan PowerShell.
Erik Funkenbusch
3
Saya benar-benar tidak tahu PowerShell cukup untuk memberi Anda kritik tentangnya, tetapi seperti yang Anda ketahui dengan jelas tujuan dari shell Unix belum tentu merupakan penggantian yang lengkap dari perkakas eksternal, melainkan struktur kontrol di sekitarnya. Sekali lagi saya tidak bisa saat ini membandingkan atau kontras tetapi meninggikan PowerShell karena memiliki lebih banyak built-in belum tentu anugerah kerang Unix.
Jé Queue
@ Xepoch - Intinya adalah, Anda dapat memilih cara mana yang ingin Anda lakukan. Anda dapat menggunakan semua kebaikan shell built-in, atau Anda dapat mengabaikan dan melakukannya dengan cara Unix melakukannya. Itu pilihanmu. Dan pilihan itu baik, bukan?
Erik Funkenbusch