Windows PowerShell มีประสิทธิภาพเทียบเท่ากับเทอร์มินัลของ Unix / Linux หรือไม่? [ปิด]


44

Windows PowerShellมีประสิทธิภาพและมีประสิทธิภาพเทียบเท่ากับ Linux terminalหรือไม่

ผู้คนออฟไลน์บอกฉันว่า Windows PowerShell เป็นความพยายามที่จะทำให้ผู้ดูแลระบบ Unix รู้สึกสะดวกสบายยิ่งขึ้นเมื่อใช้ Windows แต่ฉันเดาว่าพวกมันจะสบายใจถ้ามันมีประสิทธิภาพเท่ากัน (หรือเกือบ)


3
มันยากที่จะตอบเพราะมันไม่มีเชลล์ Linux มีเชลล์จำนวนมากที่ใช้กันทั่วไปบน Linux (หรือโดยทั่วไป * ระบบ nix) ที่ใช้มากที่สุดคือทุบตีดังนั้นคุณอาจต้องการถามเกี่ยวกับสิ่งนั้น <br> นอกจากนี้ "ความทรงพลัง" ยังเป็นพื้นฐานของความคิดเห็น
Kritzefitz

7
People offline tell me ... that Windows Powershell is an attempt to make UNIX administrators feel more comfortable using Windows.คนเหล่านั้นไม่ได้ใช้ Unix หรือ Powershell
surfasb

ฉันจะบอกว่า PowerShell เป็นคำตอบจากบางส่วนของ Microsoft ที่พวกเขาทำผิดพลาดโดยไม่มีเชลล์ที่มีประสิทธิภาพให้ใช้งาน มันไม่ได้คัดลอกสไตล์ของ UNIX เลย หากต้องการทราบ PS คุณเข้าใจดีเกี่ยวกับการทำงานของ Windows และวิธีการทำงานของ. NET
Julian Knight

BTW, Microsoft มี BASH shell ที่พร้อมใช้งานซึ่งเป็นส่วนหนึ่งของชุดโยกย้ายเครื่องมือที่จะช่วยให้ผู้คนย้ายจาก UNIX ไปยัง Windows Server
Julian Knight

1
ฉันเป็นแฟนตัวยงของยูนิกซ์ที่รู้จักยูนิกซ์มาเป็น Windows มานานแล้ว อย่างไรก็ตาม PowerShell เต้นทุบตีเพราะวัตถุท่อหนึ่งมีคู่คีย์ / ค่าและไม่ใช่ข้อความบริสุทธิ์ สิ่งนี้ทำให้การออกแบบคล้ายกับ jQuery มากกว่าการทุบตี
Mario

คำตอบ:


55

ปัญหาแรกของคุณคือคุณกำลังเปรียบเทียบเชลล์ (PowerShell) กับเทอร์มินัล ในลินุกซ์, ขั้วคือสิ่งที่จะส่งและรับตัวอักษรตาม I / O และจะถือว่ามีผู้ใช้แบบโต้ตอบที่อยู่เบื้องหลังมัน (ในคำอื่น ๆ ก็โปรแกรมประยุกต์แบบ GUI ที่ใช้ในการประกอบด้วยเปลือก) หนึ่งในหอยที่พบมากที่สุดที่เรียกใช้ภายในเทอร์มินัลของ Ubuntu คือBashแต่ก็มีบางตัว

ผู้คนออฟไลน์บอกฉันว่า Windows PowerShell เป็นความพยายามที่จะทำให้ผู้ดูแลระบบ Unix รู้สึกสะดวกสบายยิ่งขึ้นเมื่อใช้ Windows

จริงๆแล้วสิ่งที่ถูกต้องในการพูดคือ PowerShell คือ Windows เปิดเผยโมเดลวัตถุWMI , COMและ. NET จำนวนมากในสภาพแวดล้อมของบรรทัดคำสั่งแบบโต้ตอบและสคริปต์ได้และสภาพแวดล้อมของบรรทัดคำสั่งนี้ยังคงยืมแนวคิดหลายอย่างเช่นท่อ และการเปลี่ยนเส้นทาง I / O - จาก Unix shells เช่นเดียวกับ DOS เก่า (2.0 ขึ้นไป) command.comและcmd.exeทำ ท่อทำงานกับวัตถุใน PowerShell คุณสามารถทำสิ่งต่าง ๆ เช่นสร้าง HTML และอาจเป็นไปได้ว่าสเปรดชีตExcelทำได้ทันทีหากคุณรู้พอ ก็แน่นอนอัพเกรด / ทดแทนจากเดิมcmd.exeเปลือกซึ่งไม่ได้เปลี่ยนแปลงมากจากWindows NT 4.0

เกี่ยวกับไวยากรณ์มันเหมือนกับหอย Unix น้อยกว่า (แม้ว่าท้ายที่สุดแล้วไม่มี cmdlets ใดที่ใช้/เป็นสวิตช์หรือพารามิเตอร์ตัวบ่งชี้) แต่มีนามแฝงจำนวนมากสำหรับคำสั่ง Unix แบบคลาสสิกเช่นการป้อนlsในหน้าต่าง PowerShell จะทำงานdirได้ แต่นี่เป็นเพียงนามแฝง ("Get-Alias" แสดงรายการเหล่านี้หรือไม่)

เกี่ยวกับความสามารถของ PowerShell คุณมีความสามารถที่คล้ายกันในรูปแบบสคริปต์อย่างเดียวจากVBScriptและCScript - แม้ว่าทั้งสองจะมี. NET เหล่านี้มาก่อน

สิ่งหนึ่งที่คน Unix ไม่ต้องทำเมื่อใช้ Bash เป็นส่วนใหญ่คือการคุ้นเคยอย่างใกล้ชิดกับรูปแบบวัตถุของโปรแกรมเมอร์หรือวัตถุที่มีความซับซ้อนมากซึ่งจำเป็นสำหรับงาน PowerShell ขั้นสูงและเรียบง่าย แต่นี่เป็นไปได้เพียงเพราะมีข้อตกลงที่ชัดเจนของเอาต์พุตข้อความแบบตรงสำหรับคำสั่งPOSIXมาตรฐานจำนวนมาก Windows ไม่มีประเพณีนี้ - ดูเหมือนว่าคุณต้องการใช้mmcคอนโซลสำหรับงานการดูแลระบบโดยมีคำสั่งเพิ่มที่นี่และที่นั่นตลอดหลายปีที่ผ่านมา นอกจากนี้ที่รู้จักกันดีสาธารณูปโภค Unix หลายมีความซับซ้อนและต้องมีการศึกษาก่อนที่จะใช้งาน - rsync, wgetและอื่น ๆ อีกมากมาย ประสิทธิภาพอาจเป็นฟังก์ชั่นของเครื่องมือที่พวกเขาใช้มากกว่าสิ่งอื่นใด


8
+1 สำหรับการกล่าวถึงว่า PowerShell เปิดเผย. NET ไปยังคอนโซล & ในฐานะโฮสต์การเขียนสคริปต์ มันแสดงให้เห็นถึงพลังของห้องสมุด Windows ที่สำคัญหลายแห่งที่จะใช้ในการเขียนสคริปต์ กรณีการใช้งานระหว่างสองอาจจะคล้ายกันสไตล์ที่แตกต่างกันโดยสิ้นเชิง
Julian Knight

3
+1 สำหรับการกล่าวถึงว่าเทอร์มินัลมีเปลือก ฉันใช้ Windows และ Linux มานาน แต่ไม่เคยมีใครบอกถึงความแตกต่างอย่างชัดเจน
Tyler Collier

25

Windows PowerShell และ Unix shell เป็นสองสิ่งที่แตกต่างกันซึ่งมีข้อดีทั้งสองอย่าง

Unix (shell) มีปรัชญาที่ทุกอย่างเป็นไฟล์ อินพุตและเอาต์พุตของคำสั่ง Unix สามารถเข้าถึงได้เหมือนไฟล์ สิ่งนี้ทำให้คำสั่ง chaining ง่ายมากและการนำเอาท์พุทของอีกคำสั่งหนึ่งมาใช้ซ้ำคือพลังของเชลล์ Unix

ด้วย Windows PowerShell เท่าที่ฉันรู้ทุกสิ่งเป็นวัตถุ คุณสามารถส่งผลลัพธ์ของคำสั่งไปยังวัตถุอื่นได้ สิ่งนี้มีพลังมาก แต่ก็ไม่มีแนวคิดง่ายๆของ Unix

ฉันไม่เชื่อว่า PowerShell นั้นมีประสิทธิภาพเท่ากับเชลล์ Unix แต่คนอื่นเชื่อว่าเป็น

แต่การเปรียบเทียบนั้นเป็นสิ่งที่สงสัยเนื่องจาก Windows ไม่ใช่ระบบ * nix ดังนั้นจึงไม่มีการนำแนวคิด * nix มาใช้ เมื่อเทียบกับMS-DOS PowerShell เป็นการปรับปรุงที่ยอดเยี่ยม


4
ทุกอย่างคือไฟล์ไม่มีส่วนเกี่ยวข้องกับเชลล์มันเป็นเคอร์เนล
terdon

3
จริง แต่มันส่งผลกระทบต่อวิธีการออกแบบยูนิกซ์เชลล์
Biapy

@terdon: ถูกต้อง แต่เชลล์ใช้งานได้ดีกับสิ่งนี้ เพราะมันยังคงเป็นเปลือกที่ตระหนักถึงสัญลักษณ์เช่น|, หรือ< >
Kritzefitz

1
ผู้คนกำลังพูดถึงวัตถุเหล่านี้อย่างต่อเนื่องใน PowerShell มีการใช้งานกับ cmd.exe และ bash (หรือเชลล์อื่น ๆ ) เท่านั้นคุณสามารถอธิบายรายละเอียดด้วยตัวอย่างง่ายๆได้หรือไม่?
ลัค

5
โดยไม่ต้องส่งคุณออกจากหน้านี้ - เมื่อคุณเชื่อมโยงสิ่งต่าง ๆ ในระบบ * nix ทางด้านขวาของไปป์คุณคาดหวังข้อความธรรมดาตัวอย่างเช่น --- history | grep cp --- จะส่งคืนเฉพาะบรรทัดที่มี cp ในทางกลับกันเมื่อวางสิ่งต่าง ๆ ใน PS ทางด้านขวาคุณจะได้รับวัตถุพร้อมคุณสมบัติเช่นนี้ --- Get-History | โดยที่ Object-{$ _. CommandLine -eq "cp"} --- $ _ เป็นแต่ละอ็อบเจกต์ CommandLine เป็นคุณสมบัติ -eq เท่ากับและสุดท้ายคือสตริง cp
ไม่ทราบ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.