Windows PowerShell은 Unix / Linux의 터미널만큼 강력합니까? [닫은]


44

Windows PowerShell 은 Linux만큼 강력하고 효율적 terminal입니까?

오프라인 사용자는 Windows PowerShell이 ​​Unix 관리자가 Windows를보다 편안하게 사용하게하려는 시도라고 별다른 설명없이 알려줍니다. 그러나 나는 그것들이 (또는 거의) 동일한 효율을 가진 경우에만 편안 할 것이라고 생각합니다.


3
리눅스 쉘이 없기 때문에 대답하기가 어렵습니다. Linux (또는 일반적으로 * nix 시스템)에서 일반적으로 사용되는 많은 쉘이 있습니다. 가장 많이 사용되는 것은 배쉬이므로 이에 대해 물어보고 싶을 수도 있습니다. <br> 또한 "강력한"은 매우 의견에 근거합니다.
Kritzefitz

7
People offline tell me ... that Windows Powershell is an attempt to make UNIX administrators feel more comfortable using Windows.그 사람들은 유닉스 나 파워 쉘을 사용하지 않았습니다.
surfasb

PowerShell은 강력한 셸을 사용할 수 없어서 엉망이되었다는 Microsoft의 일부 영역의 인정입니다. 그러나 UNIX 스타일을 전혀 복사하지는 않습니다. PS를 알기 위해서는 Windows의 작동 방식과 .NET의 작동 방식에 대해 약간 이해하는 것이 좋습니다.
Julian Knight

BTW, Microsoft는 사람들이 UNIX에서 Windows Server로 이동하는 데 도움이되는 마이그레이션 툴킷의 일부인 BASH 셸을 사용할 수있었습니다.
Julian Knight

1
저는 대부분의 측면에서 Unix를 Windows보다 선호하는 오랜 Unix 팬입니다. 그러나 하나의 파이프는 순수 텍스트가 아닌 키 / 값 쌍을 가진 개체를 파이프하기 때문에 PowerShell은 bash를 극복합니다. 이것은 디자인에서 bash보다 jQuery와 더 유사합니다.
마리오

답변:


55

첫 번째 문제는 쉘 (PowerShell)을 터미널과 비교한다는 것입니다. Linux에서 터미널은 문자 기반 I / O를 송수신하는 것으로 대화 형 사용자가 있다고 가정합니다 (즉, 셸 을 포함 하는 데 사용되는 GUI 응용 프로그램 임). 우분투 터미널 에서 가장 많이 실행되는 쉘 중 하나 는 Bash 이지만 다른 쉘 도 있습니다.

오프라인 사용자는 Windows PowerShell이 ​​Unix 관리자가 Windows를보다 편안하게 사용하게하려는 시도라고 별다른 설명없이 알려줍니다.

실제로 올바른 말은 PowerShell이 대화식이고 스크립트 가능한 명령 줄 환경에서 WMI , COM.NET 개체 모델의 많은 부분을 노출하는 Windows 이고 파이프 라인과 같은 많은 개념을 계속 빌려 온다는 것입니다. 이전 DOS (2.0 이상) command.com와 마찬가지로 Unix 쉘에서 I / O 리디렉션 cmd.exe. 파이프 라인은 PowerShell에서 개체와 함께 작동합니다. 충분히 알고 있다면 HTML 및 Excel 스프레드 시트를 작성하는 등의 작업을 즉시 수행 할 수 있습니다. Windows NT 4.0과cmd.exe 크게 다르지 않은 이전 셸 의 업그레이드 / 교체입니다 .

구문과 관련해서는 Unix 셸과 비슷하지만 (최종의 cmdlet /은 스위치 또는 매개 변수 표시기로 사용하지 않지만 ) lsPowerShell 창에 입력 하는 것과 같은 고전적인 Unix 명령에는 많은 별칭 이 있습니다 dir. 그러나 이들은 별명 일뿐입니다 ( "Get-Alias"에 나열되어 있습니까?).

PowerShell의 기능과 관련하여 VBScriptCScript 에서 스크립트 전용 방식으로 비슷한 기능을 실제로 가지고 있었지만 둘 다 이전의 .NET입니다.

대부분의 경우 Bash를 사용할 때 유닉스 사람들이 할 필요가없는 한 가지는 프로그래머 나 객체의 매우 정교한 객체 모델에 친숙하게 익숙해야한다는 것입니다. 이는 많은 고급 및 간단한 PowerShell 작업에 필요합니다. 그러나 이것은 많은 표준 POSIX 명령에 대한 명확한 텍스트 출력 규칙이 있기 때문에 가능 합니다. Windows는 이러한 전통을 가지고 있지 않습니다. mmc관리 작업을 위해 콘솔을 사용하는 것이 좋으며, 몇 년 동안 여기 저기에 명령이 추가되었습니다. 또한, 많은 잘 알려진 유닉스 유틸리티는 복잡하고 사용하기 전에 몇 가지 연구가 필요 - rsync, wget및 많은 다른 사람을. 효율성은 아마도 무엇보다 도구를 얼마나 잘 사용하고 있는지에 대한 함수일 것입니다.


8
PowerShell은 .NET을 콘솔 및 스크립팅 호스트에 노출 시킨다는 언급에 +1했습니다. 스크립팅에 사용되는 많은 주요 Windows 라이브러리의 기능을 제공합니다. 둘 사이의 사용 사례는 비슷할 수 있으며 스타일은 완전히 다릅니다.
Julian Knight

3
터미널에 쉘이 있다고 언급하면 ​​+1입니다. 나는 오랫동안 Windows와 Linux를 사용해 왔지만 그 차이를 명확하게 언급 한 사람은 없었습니다.
Tyler Collier

25

Windows PowerShell과 Unix 셸은 두 가지 장점이 있습니다.

유닉스 (쉘)는 모든 것이 파일이라는 철학을 가지고 있습니다. Unix 명령의 입력 및 출력은 파일처럼 액세스 할 수 있습니다. 이것은 연쇄 명령을 정말 간단하게 만들고 한 명령의 출력을 다른 명령에 의해 재사용하는 것이 유닉스 쉘의 힘입니다.

내가 아는 한 Windows PowerShell을 사용하면 모든 것이 개체입니다. 명령 결과를 다른 객체에 객체로 전달할 수 있습니다. 이것은 실제로 강력 할 수 있지만 Unix라는 간단한 개념은 없습니다.

PowerShell이 ​​Unix 쉘만큼 효율적이라고는 생각하지 않지만 다른 사람들은 그것이 PowerShell이라고 생각합니다.

그러나 Windows는 * nix 시스템이 아니므로 * nix 개념이 적용되지 않기 때문에 비교가 불합리합니다. MS-DOS 와 비교할 때 PowerShell은 크게 개선되었습니다.


4
모든 것은 파일과 셸과 관련이 없으며 커널입니다.
terdon

3
사실이지만 유닉스 쉘의 디자인 방식에 영향을 미칩니다.
Biapy

@ terdon : 맞습니다. 그러나 쉘은 이것과 잘 작동합니다. 여전히 같은 문자 인식 쉘 때문에 |, <또는 >.
Kritzefitz

1
사람들은 Powershell에서 이러한 객체에 대해 계속 이야기합니다. cmd.exe 및 bash (또는 다른 셸)에만 익숙하므로 간단한 예를 들어 자세히 설명 할 수 있습니까?
Luc

5
이 페이지에서 사용자를 보내지 않고 파이프 오른쪽의 * nix 시스템에서 파이프 라인을 만들 때 간단한 텍스트 (예 : --- history | grep cp ---는 cp가 포함 된 행만 반환합니다. 반면 PS에서 오른쪽에 파이프 라인을 파이프 라이닝하면 다음과 같은 속성을 가진 객체를 얻게됩니다. --- Get-History | Where-Object {$ _. CommandLine -eq "cp"} --- $ _는 각 객체이고 CommandLine은 속성이며 -eq는 문자열 cp와 같습니다.
알 수없는
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.