PowerShell이 ​​Windows에서 Cygwin 셸을 교체 할 준비가 되셨습니까? [닫은]


384

PowerShell을 배우거나 Cygwin / Perl 스크립트 / Unix 쉘 스크립트 등을 고수 해야하는지 여부에 대해 토론 하고 있습니다.

PowerShell의 이점은 Cygwin이없는 팀원이 스크립트를보다 쉽게 ​​사용할 수 있다는 것입니다. 그러나 나는 그 많은 범용 스크립트를 실제로 쓰고 있는지, 사람들이 그것을 사용할 것인지 모르겠습니다.

유닉스 스크립팅은 매우 강력합니다. PowerShell이 ​​전환을 보장 할 수있을만큼 가까워 집니까?

PowerShell에서 찾고자하는 특정 항목 (또는 이에 상응하는 항목)은 다음과 같습니다.

  • grep
  • 종류
  • 유니크
  • Perl (PowerShell은 Perl의 기능에 얼마나 근접합니까?)
  • AWK
  • sed
  • file (파일 정보를 제공하는 명령)
  • 기타

7
나는 Powershell을 고르는데 관심이 있었고이 페이지를 찾았는데 이제는 PS와 내가 사용했던 쉘 스크립팅의 일반적인 차이점을 알고있다.
Bender the Greater

5
이 게시물은 HN 링크 제출에서 갑자기 재로 상승했습니다. 훌륭한 일. 그리고 @Bobby에게는 이것을 건설적이지 않은 것으로 끝내는 것이 좋지 않습니다.
Sid

26
어떤 도구가 한 도구가 다른 도구의 기능을 얼마나 잘 복제하는지 묻지 않으면 도구 비교 질문에 대답 할 수 없습니다. 이것은 논쟁을 피하기 위해주의 깊게 쓰여졌지만 단순히 유닉스 대 Windows 질문처럼 보이는 것에 대해 부주의 한 것으로 간주되었습니다. 또한 Unix 스크립팅이 Windows에서 얼마나 도움이 될지에 대한 추가적인 사실에 대한 통찰력과 객관적인 답변을 얻었습니다.
chernevik

16
왜 다시 닫히나요? "Windows 플랫폼에서 PowerShell vs Unix 쉘"이라고 제목을 편집하여 트롤을 "Windows vs Unix"로 취급하지 않도록하십시오. 이것은 완전히 건설적인 질문입니다-재개 투표.
x0n

3
op는 도구와 쉘을 혼합하고 있습니다. PowerShell에서 사용합니다. 그러나 GNU는 UNIX 제품을 Windows를 포함한 다른 OS에 자유롭게 가져 오는 프로젝트입니다. 목록 op의 모든 것은 Windows에서 gnu 구현을 제공합니다. GnuWin32 또는 개별 사이트에서 액세스 할 수 있습니다. Windows BAT는 쓸모가 없으며 리디렉션 및 파이프 및 조건이 있습니다.
MeaCulpa

답변:


783

도구는 도구 일뿐입니다.
그들은 돕거나하지 않습니다.
도움이 필요하거나 필요하지 않습니다.

Unix와 해당 도구가 Windows에서 필요한 작업을 수행한다는 것을 알고 있다면 행복하게 생각할 수 있으며 PowerShell을 배울 필요가 없습니다 (탐색하지 않는 한).

저의 원래 의도는 Windows에 일련의 유닉스 도구를 포함시키고 그 도구를 사용하는 것이 었습니다 (팀의 많은 사람들이 유닉스 배경에 깊은 관심을 가지고 있으며 해당 커뮤니티에 대한 건전한 존중을 받았습니다).

내가 찾은 것은 이것이별로 도움이되지 않았다는 것입니다. 그 이유는 AWK / grep / sed가 COM , WMI , ADSI , 레지스트리, 인증서 저장소 등에 대해 작동하지 않기 때문입니다 .

다시 말해, UNIX는 텍스트 파일을 중심으로 자체 조정 된 전체 에코 시스템입니다. 따라서 텍스트 처리 도구는 효과적으로 관리 도구입니다. Windows는 API와 객체를 중심으로 자체 조정 된 완전히 다른 생태계입니다. 그래서 우리는 PowerShell을 발명했습니다.

필자가 생각하는 것은 텍스트 처리로 Windows에서 원하는 것을 얻지 못하는 경우가 많다는 것입니다. 이 시점에서 PowerShell을 선택해야합니다. 참고-그것은 전부 또는 아무것도 거래가 아닙니다. PowerShell 내에서 Unix 도구를 호출하고 텍스트 프로세스 또는 PowerShell의 텍스트 처리를 사용할 수 있습니다. 또한 Unix 도구에서 PowerShell을 호출하여 텍스트를 얻을 수 있습니다.

다시 말하지만 여기에는 종교가 없습니다. 우리의 초점은 당신에게 성공에 필요한 도구를 제공하는 것입니다. 그렇기 때문에 피드백에 대한 열정이 있습니다. 우리가 직장에서 쓰러지는 곳이나 필요한 도구가없는 곳을 알려 주면 목록에 올려 놓을 것입니다.

정직하게 말해서, 우리는 30 년짜리 구멍에서 파헤쳐 서 시간이 좀 걸릴 것입니다. 즉, Windows Server 2008 / R2의 베타 및 / 또는 서버 제품의 베타를 선택하면 그 구멍이 얼마나 빨리 채워지는지 충격을받을 것입니다.

사용량과 관련하여 현재까지 350 만 건 이상의 다운로드가있었습니다. 선택적 구성 요소로 포함되어 있으며 다운로드가 필요하지 않기 때문에 Windows Server 2008에서 사용하는 사람은 포함되지 않습니다.

V2는 모든 버전의 Windows에 제공됩니다. 선택 구성 요소 인 서버 코어를 제외한 모든 버전의 경우 기본적으로 사용됩니다. Windows 7 / Windows Server 2008 R2가 출시 된 직후, 모든 플랫폼, Windows XP 이상에서 V2를 사용할 수있게됩니다. 즉, 학습에 대한 투자는 매우 많은 기계 / 환경에 적용됩니다.

마지막 의견. PowerShell을 배우기 시작하면 행복 할 것입니다. 디자인의 많은 부분이 유닉스 배경에 크게 영향을 받으므로, 우리가 상당히 다른 반면, 유닉스가 아니라는 점을 극복 한 후에는 매우 빨리 선택할 수 있습니다.

우리는 사람들이 학습을위한 예산이 매우 제한적이라는 것을 알고 있습니다. 이것이 일관성에 대해 매우 어려운 이유입니다. 무언가를 배우고 나면 계속 반복해서 사용할 것입니다.

실험! 즐겨! 끌다!


11
답변 주셔서 감사합니다. 계속해서 PowerShell을 배우겠다고 생각합니다. 지금까지 본 것보다 강력 해 보이며 직장에서 더 유용한 스크립트를 작성할 수 있습니다.
Andy White

55
@ Jeffrey : Windows 용 터미널이 더 좋을 가능성이 있습니까? Powershell은 강력한 스크립팅 언어이지만 cmd.exe에서 실행되므로 대화 형 모드에서 훨씬 더 편리합니다
sumek

47
이 "건설적이지 않은"질문은 "유닉스에서 모든 것이 파일"이라는 만트라에 대한 최고의 통찰력과 Windows가 다른 이유를 제시했습니다. 아마도 StackOverflow는 건설적인 토론을 끝내지 않고 더 잘 제공 될 것 입니까?
chernevik

12
@sumek-ConEmu를 사용해보십시오; 나는 그것을 몇 주 동안 사용해 왔으며 꽤 달콤합니다 : hanselman.com/blog/…
EZ Hart

4
헤딩 : Powershell은 이진 데이터 파이핑을 좋아하지 않습니다. 따라서 신뢰할 수있는 유닉스 도구를 호출 할 때는 PowerShell에서 tar -c . | gzip > package.tar.gz 직접 수행하는 작업을 수행하지 마십시오. 그렇지 않으면 어려움을 겪을 수 있습니다. brianreiter.org/2010/01/29/…
Interarticle

123

grep

Select-Stringcmdlet 및 -match연산자는 정규식을 사용합니다. 또한 고급 기능에 대한 .NET 정규식 지원을 직접 사용할 수 있습니다.

종류

Sort-Object더 강력합니다 (* nix 's를 기억하는 것보다 sort). 임의의 표현식에서 다중 레벨 정렬을 허용합니다. PowerShell의 기본 유형 유지 관리가 도움이됩니다. 예를 들어, DateTime속성은 DateTime정렬 가능한 형식으로 형식화하지 않아도 속성 으로 정렬됩니다.

유니크

Select-Object -Unique

Perl (PowerShell은 Perl 기능에 얼마나 근접합니까?)

Perl의 광범위한 도메인 특정 지원 라이브러리 측면에서 볼 때, 아직 멀지 않습니다.

일반적인 프로그래밍의 경우 PowerShell은 확실히 더 응집력 있고 일관되며 확장하기 쉽습니다. 텍스트 녹기의 한 가지 격차는 Perl의 ..연산자 와 동등한 것 입니다.

AWK

AWK를 사용한 이후로 오랜 시간이 걸렸으며 (나중에 Perl을 사용한 이후 18 년 이상이어야 함) 실제로 의견을 말할 수는 없습니다.

sed

[위 참조]

file (파일 정보를 제공하는 명령)

여기서 PowerShell의 강점은 파일 시스템 객체로 할 수있는 일이 그리 많지 않다는 것입니다 (그리고 여기에서 전체 정보를 얻 거나 dir반환 FileInfo하거나 FolderInfo객체를 적절하게 얻습니다 )는 전체 공급자 모델입니다.

레지스트리, 인증서 저장소, SQL Server, Internet Explorer의 RSS 캐시 등을 파일 시스템과 동일한 cmdlet으로 탐색 할 수있는 개체 공간으로 취급 할 수 있습니다.


PowerShell은 Windows에서 앞으로 나아갈 길입니다. Microsoft는 향후 비 가정 제품에 대한 요구 사항의 일부로 만들었습니다. 따라서 Exchange의 풍부한 지원, SQL Server의 지원. 이것은 단지 확장 될 것입니다.

최근의 예는 TFS PowerToys입니다. 많은 TFS 클라이언트 작업은 매번 tf.exe를 시작하지 않고도 수행되며 (새 TFS 서버 연결 등이 필요함) 데이터를 추가로 처리하기가 훨씬 쉽습니다. 뿐만 아니라 TF.exe의 팀 탐색기에 노출 된 것보다 더 상세하게 전체 TFS 클라이언트 API에 대한 광범위한 액세스를 허용합니다.


2
OS가 텍스트를 범용 구성 매체로 사용하지 않기 때문에 제공자 모델이 흥미 롭기 때문에 이러한 제공자가 필요합니다. UNIX에서는 대부분의 언어에 PAM, 호스트 및 패키지를 다루는 API가 있지만 궁극적으로 텍스트가 항상 있습니다.
Daishiman

12
텍스트가 항상 모든 형식에 가장 적합한 형식은 아닙니다 (데이터베이스 및 래스터 이미지로 시작). 그러나 우리는 개방형 전쟁보다는 의견에 동의하지 않을 수 있다고 생각합니다.
Richard

5
Powershell은 .NET 프레임 워크의 모든 개체를 사용할 수 있습니다. 이것이 Perl의 도메인 기능과 일치하지 않습니까? 또한 재사용 성을 원한다면 C # 등으로 cmdlet을 작성할 수 있습니다.
Chris S

포인트 별 비교. 좋은데 이것이 정답입니다. PowerShell의 장점은 .NET 기초와 새로운 Cmdlet을 작성하거나 클래스 라이브러리를 호출하여 시스템을 얼마나 쉽게 확장 할 수 있는지에 있습니다.
Sau001

sed의 일반적인 용도는 다음 sed 's/pattern/replacement/' file과 같습니다. , 대략 gc file | %{$_ -replace 'pattern','replacement'}awk와 비슷합니다. awk 'BEGIN {} /pat1/ {action1} /pat2/ {action2} END {}' file대략{BEGIN {}; switch -r -c -file file { 'pat1' {action1} 'pat2' {action2}}; END{};}
Nathan Chappell

56

1997 년부터 2010 년까지 Windows 엔터프라이즈 개발에 중점을 둔 경력을 가진 사람은 이전에 주어진 모든 좋은 이유 (예 : Microsoft의 엔터프라이즈 전략의 일부이며 Windows / COM / .NET과 잘 통합됨)에 대한 PowerShell이 ​​될 것입니다. 파일 대신 객체를 사용하면 "더 풍부한"코딩 모델이 제공됩니다. 이런 이유로 나는 지난 2 년 동안 PowerShell을 사용하고 홍보 해 왔으며, "Bill of Bill"을 굳게 믿고있었습니다.

그러나 실용 주의자로서 나는 더 이상 PowerShell이 ​​그렇게 훌륭한 대답이라고 확신하지 않습니다. 뛰어난 Windows 도구이며 Window 명령 줄인 역사적인 구멍을 채우는 데 필요한 단계를 많이 제공하지만 소비자 컴퓨팅 슬립에 대한 Microsoft의 그립을 보면서 Microsoft가 OS를 유지하기 위해 막대한 전투가 벌어 질 가능성이 높아지고 있습니다. 미래의 기업에 중요합니다.

실제로, 내 작업이 점점 더 이기종 환경에 있다는 것을 알았을 때, Linux, Solaris 및 Mac OS X에서만 작동 할뿐만 아니라 현재와 함께 작동하기 때문에 Bash 스크립트를 사용하는 것이 훨씬 더 유용하다는 것을 알게되었습니다. Cygwin의 도움 —Windows.

따라서 OS의 미래가 독점이 아닌 상품화되었다고 믿는다면, 가능한 경우 독점 도구를 사용하지 않는 민첩한 개발 도구 전략을 선택하는 것이 합리적입니다. 그러나 여러분의 미래가 All-that-is-Redmond에 의해 지배되는 것을 본다면 PowerShell로 가십시오.


1
Unix 스크립트가 Cygwin-Windows에서 오류없이 완벽하게 작동합니까?
Pacerier

@Pacerier 저는 Cygwin과 MinGW를 12 년 동안 사용해 왔으며 놀랍게도 거의 문제가 없었습니다. 중요한 것은 무언가가 작동하지 않으면 항상 Windows 도구 나 다른 도구로 대체 할 수 있다는 것입니다. 프로세스는 다른 쉘이 시작하는 것과 같은 방식으로 시작할 수 있습니다.
Evgeni Sergeev 2016 년

4
답은 2011 년입니다. 오늘날 powershell은 Linux에서도 실행됩니다. 내 개인적 견해로는 배쉬가 너무 골동품입니다. 구문은 끔찍하며 다른 스크립트 언어를 사용하고 싶습니다. 요즘에는 대부분의 리눅스 배포판에서 파이썬이 표준으로 사용되므로 스크립트에 bash를 사용해야 할 이유가 없습니다. 2011 년 이후 많은 일이
벌어 졌으므로


33

스크립트 자동화에 약간의 PowerShell을 사용했습니다. 환경이 유닉스 쉘보다 훨씬 더 많은 것으로 생각되는 것은 매우 좋지만 실제로 텍스트 스트림 대신 객체를 사용하는 것은 훨씬 더 어색하고 지난 30 년 동안 개발 된 많은 유닉스 기능 몇 년이 아직 없습니다.

Cygwin은 여전히 ​​Windows 호스트에서 선택한 스크립팅 환경입니다. 그것은 일을 끝내는 측면에서 대안을 확실히 능가합니다.


27
객체를 사용하는 것은 패러다임 전환이며 익숙해지기까지합니다. 그러나 구조화 된 데이터가 관련된 각 단계에서 전체 재분석을 피합니다 (예 : 필드를 구분할 필요가 없음).
Richard

16
@Andy White @Daishiman, PowerShell을 사용하여 학습 곡선이 어디에 있는지 이해할 수 있지만 배관 객체는 배관 텍스트보다 훨씬 유연 할 수 있습니다. @Richard가 맞습니다. :)
Steven Murawski

18
자동차 제조업체도 1000 년 이상의 말과 말다툼을하기가 어려웠습니다. 나는 플립 패트하려고하지 않습니다. 과거의 성공이 혁신의 잠재적 이점을 제거하지는 않는다고 지적했습니다.
EBGreen

12
@daishiman-Objects의 이점은 속성을 원할 때 요청합니다. 파싱, 추측, 캐스트 할 필요가 없다는 것입니다. "객체에 호환 가능한 메소드가없는 경우 어떻게되는지"에 대한 귀하의 요점을 이해하지 못했습니다. 다른 방법으로 말하거나 문제의 예를 들어 주시겠습니까? 감사.
Jeffrey Snover-MSFT

13
@Daishiman-이해합니다. 실제로 사람들은 이것이 문제가 아니라 큰 이점이라는 것을 알았습니다. 즉, 만약 당신이 전문적인 텍스트 파서라면, 이것은 배우는 새로운 기술이 될 것이며 처음에는 불필요하고 어색하다고 느낄 수 있습니다. 다시 말하지만 도움이되는 것은 올바른 도구입니다.
Jeffrey Snover-MSFT

15

여기에 큰 훌륭한 답변이 많이 있으며 여기에 내 의견이 있습니다. 다음과 같은 경우 PowerShell이 ​​준비되었습니다. 예 :

grep = " 선택 문자열-패턴 "

sort = "정렬 개체"

uniq = " Get-Unique "

파일 = " Get-Item "

cat = " Get-Content "

Perl / AWK / Sed는 명령이 아니지만 유틸리티를 비교하기는 어렵지만 PowerShell에서 거의 모든 작업을 수행 할 수 있습니다.


2
우리 조상들이 사용했던 비밀스러운 4 글자 명령을 믿을 수 있습니까?
Evgeni Sergeev

4
@EvgeniSergeev 모두는 위와 같이 기본적으로 사용할 수있는 sls, sort, gu, gi,는 gc각각. 한 시스템에서 탭 완성이 가능한 짧은 읽기 쉬운 이름과 짧은 유형의 이름. 그것은 사용자에게 친숙한 발전입니다.
TessellatingHeckler

에 대한 별칭 중 하나는 Get-Content입니다 cat. 따라서 Cygwin / Unix와 PowerShell 사이에는 차이가 없습니다. 불행히도 대부분의 경우 cmdlet에 대한 Microsoft 설명서에는 별칭에 대한 정보가 없지만 PowerShell 세션에서 모든 별칭 목록이 출력됩니다Get-Alias . "Get-Unique"의 별칭은 "gu"이므로 Cygwin / Unix보다 짧습니다!
Peter Mortensen

13

나는 최근에 어느 정도의 심각성을 가지고 PowerShell에서 손을 대기 시작했습니다. 지난 7 년 동안 나는 거의 독점적으로 Windows 기반 환경에서 일했지만 Unix 배경에서 왔으며 Windows에서 내 상호 작용 경험을 "Unix-fy"하려고 끊임없이 노력하고 있습니다. 가장 말을하는 것이 실망 스럽다.

grep , sed , awk , find 등의 유틸리티 가 엄밀히 말하면 쉘의 일부가 아니기 때문에 PowerShell을 Bash , tcsh 또는 zsh 와 비교하는 것만 공평합니다 . 그러나 항상 모든 유닉스 환경의 일부가 될 것입니다. 즉 같은 PowerShell 명령 말했다 선택 문자열이 아주 유사한 기능이 grep을을 하고 있다 선이 약간 흐리게 할 수 있도록 ... PowerShell의 핵심 모듈로 번들.

핵심은 문화 라고 생각하고 , 각 도구 세트가 각자의 문화를 구현할 것이라는 사실을 생각합니다 .

  • 유닉스는 파일 기반 (일반적으로 유니 코드가 아닌) 텍스트 기반 문화입니다. 구성 파일은 거의 독점적으로 텍스트 파일입니다. 반면에 Windows는 구성 형식과 관련하여 항상 훨씬 더 구조화되어 있습니다. 구성은 일반적으로 관리를위한 특수 도구가 필요한 독점 데이터베이스 (예 : Windows 레지스트리)에 보관됩니다.
  • 유닉스 관리 (그리고 수년간 개발) 인터페이스는 전통적으로 명령 행과 가상 터미널이었습니다. 윈도우는 GUI로 시작했다 및 관리 기능은 최근 인에서 멀리 이동하기 시작했다 전용 GUI 기반. 우리는 커맨드 라인에서의 유닉스 경험이 PowerShell에서 중요한 리드를 감안할 때 더 풍부하고 성숙한 경험을 기대할 수 있습니다. 이것에 대해, 내 경험에서 :

    • 유닉스 관리 경험은 최소한의 키 조작만으로 쉽게 할 수 있도록 만들어졌습니다. 이것은 아마도 9600 보드 연결이 느린 서버를 통해 서버를 관리해야했던 역사적 상황 때문일 것입니다. 이제 PowerShell에는 Verbose -Noun 표준을 다루는 데 도움이되는 별칭이 있지만 별칭을 아는 것은 약간의 고통입니다 (누군가가 더 잘 알고 있습니다 : alias | where {$_.ResolvedCommandName -eq "<command>"}?).

      역사를 조작 할 수있는 풍부한 방법의 예 :

      iptables명령은 종종 오래 걸리고 Bash에 내장 된 많은 역사 조작 기능 중 하나가 아니라면 약간의 차이로 명령을 반복하는 것이 고통 스럽습니다 . 따라서 iptables 규칙을 다음과 같이 삽입하십시오.

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

      다른 카메라 ( " camera-2") 의 두 번째 시간 은 다음과 같은 경우입니다.

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

      어떤 수단 "이전 명령하지만, 대신 수행 -1--2-50함께 51.

    • 유닉스 경험은 터치 타이프 스트에 최적화되어 있습니다. "집"위치를 벗어나지 않고도 모든 것을 할 수 있습니다. 예를 들어,에 배쉬 의 사용 이맥스 키 바인딩 (예, 배쉬도 지원 VI 사용하여 수행 된 역사를 통해 순환, 바인딩) Ctrl-PCtrl-N사용하여 수행됩니다 라인의 시작과 끝으로 이동하는 동안 Ctrl-ACtrl-E각각 ... 그리고 그것은 확실히 거기서 끝나지 않습니다. 집 위치에서 움직이지 않고 PowerShell 콘솔에서 가장 간단한 탐색조차 시도해보십시오.

    • 유닉스에서 다목적 페이징 ( 약간 적은 ) 과 같은 간단한 것은 PowerShell에서 기본적으로 사용할 수없는 것처럼 보이며 약간 실망스럽고 풍부한 편집기 환경도 존재하지 않습니다. 물론, 이러한 차이를 메울 수있는 타사 도구를 항상 다운로드 할 수 있지만, 유닉스의 거의 모든 풍미와 같이 이러한 것들이 "있는"것이면 좋을 것입니다.
  • 최소한 시스템 API 측면에서 Windows 문화는 크게 구조화되고 객체 기반 인 지원 프레임 워크 인 viz., COM.NET 에 의해 좌우됩니다 . 반면, Unix API에 대한 액세스는 전통적으로 파일 인터페이스 ( /dev/proc) 또는 (객체 지향이 아닌) C 스타일 라이브러리 호출을 통해 이루어졌습니다. 스크립팅 경험이 각각의 OS 패러다임과 일치한다는 것은 놀라운 일이 아닙니다. PowerShell은 기본적으로 구조화되어 있으며 (모든 것이 개체 임) Bash 및 친구 파일 기반입니다. PowerShell 프로그래머가 사용할 수있는 구조화 된 API는 방대합니다 (기존의 표준 COM 및 .NET 인터페이스 세트의 광대 함과 일치 함 ).

즉, PowerShell에서의 스크립팅 기능은 틀림없이보다 강력하지만 있습니다 배쉬 (당신은 .NET의 가용성을 고려, 특히 BCL 의) 대화 형 경험을 당신이 완전히 키보드 중심에서오고있어 특히 경우, 상당히 약한입니다 콘솔 기반의 관점 (많은 유닉스 헤드와 마찬가지로).


"누구보다 더 나은 것을 아는 사람이 있다면 : alias | where {$ _. ResolvedCommandName -eq"<command> "}?" 그냥 alias -Definition *property(또는 다른 패턴) 어떻습니까? 귀하의 답변에 대한 문제는 쉘과 콘솔을 접고 있다는 것입니다. 다른 편집 옵션을 가진 콘솔을 선택할 수 있습니다. 그들은 사람들이 ISE와 같은 다른 콘솔을 사용하도록 장려하기 위해 의도적으로 DOS 콘솔 편집을 중단했습니다.
던컨

BTW, 귀하의 !!예제는 Powershell로 작성 될 수 (h -c 1) -replace '-1-','-2-' -replace '50','51' | iex있지만 단일 명령으로 위쪽 화살표와 편집이 더 쉽습니다. 많은 명령 에서이 작업을 수행하려면 Powershell이 ​​이길 것이라고 생각합니다. 편집과 함께 명령 # 255에서 끝나는 10 개의 명령을 반복하려면 : (h -c 10 -id 255) -replace '-1-','-2-' -replace '50','51' | iexPowershell의 기록을 사용하면 Linux 쉘에서 들어 본 적이없는 작업을 수행 할 수 있습니다. 소급해서 명령이 얼마나 오래 걸 렸는지 궁금하다면 :h -id 20 | select { $_.EndExecutionTime - $_.StartExecutionTime }
Duncan

@Duncan 여러분의 의견과 관련하여 쉘과 콘솔은 Bash와 PS의 근본적인 차이점이라고 생각합니다. 즉, Bash 특정 인터랙티브 한 경험을 제공하는 반면 PS는 다른 것을 전달합니다. ISE 콘솔에 대한 경험이 많지는 않지만 기억할 수 있듯이 대화식 경험이 풍부하지 않습니다.
Eric Smith

@ 던컨, 예-PS가 영리한 역사 속임수와 관련하여 전달할 수있는 능력에 대한 좋은 지적.
Eric Smith

@ 던컨 ...하지만 리눅스 쉘에서 들어 본 적이없는 주장에 불구하고 :fc -e "sed -i -e 's/-1-/-2-/g' -e 's/50/51/g'" 10 255
에릭 스미스

8

나는 경험이 많은 PowerShell 사용자는 아니지만, 내가 노출 된 약간은 나에게 큰 감명을 주었다. 기본 제공 cmdlet을 함께 연결하여 Unix 프롬프트에서 수행 할 수있는 모든 작업을 수행 할 수 있으며 CSV, HTML 테이블로 내보내기 및보다 심층적 인 시스템 관리 작업 유형과 같은 작업을 수행하는 데 도움이됩니다. .

그리고 실제로 sed 와 같은 것이 필요하다면 UnixUtils 또는 GnuWin32 가 항상 있습니다. PowerShell과 상당히 쉽게 통합 할 수 있습니다.

오랜 유닉스 사용자로서 명령 명명 체계에 익숙해지는 데 약간의 어려움이 있었으며 더 많은 .NET을 알고 있다면 분명히 더 많은 이점을 얻었을 것입니다.

따라서 본질적으로 Windows 전용이 문제가되지 않으면 그것을 배울 가치가 있다고 말합니다.


1
Mono를 통해 다른 플랫폼에서 PowerShell을 실행할 수있는 오픈 소스 프로젝트 "Pash"가 있습니다. tinyurl.com/6dyoso
John D. Cook

우와! 팁 고마워; 나는 그것을 시도 기다릴 수 없어
yalestar

6

쉘 스크립팅을 좋아한다면 PowerShell을 좋아할 것입니다!

Microsoft Command Shell (Ars Technica) 둘러보기를 시작하십시오 .


8
쉘 스크립팅을 좋아하며 PowerShell을 허용 합니다. 명령과 구문이 끔찍합니다. 유용한 명령 완료없이 끔찍한 긴 명령 옵션. 또는 내가 찾지 못하면. 분리해야하는 단일 명령에 너무 많은 기능이 포함되어 있습니다. 이상한 변수와 이스케이프 구문은 DOS 배치 프로그래머만이 좋아할 수 있습니다.
Zan Lynx

8
@Zan Lynx-당신은 물건을 찾지 못한 것에 대해 맞습니다. 모든 명령에는 별칭이 있으며 그 중 많은 명령은 DOS 및 UNIX 명령 (ps, dir, rm, ls, kill, history, man, cat, clear 등)과 모두 일치합니다. 이름이 길어서 의미있는 이름을 갖습니다. 스크립트에 적합-새로운 사람이 사용하고 유지해야 할 때 도움이됩니다. cmdlet, 함수, 변수, 경로, 매개 변수 등에 대한 탭 확장이 있습니다. 대부분의 구문은 Unix 셸에서 왔으며 어떤 이스케이프 구문에 대해 이야기하고 있습니까? ``Windows에서는 경로 구분 기호이므로 이스케이프에 사용되지 않습니다.
manojlds

3
@Zan Lynx-귀하의 주장은 유효하지 않습니다. 변수 해석을 중지하려면 '(작은 따옴표)를 사용하십시오. 큰 따옴표는 동일하게 사용하십시오 write-output 'this is a "test"'. 당신이 가리키는 질문은 정규식에 대한 것이며 정규식에 대한 탈출은 모든 곳에서 유효합니다. Powershell에는 Here-Strings / verbatim 문자열도 있습니다. Java조차도 이것들이 없습니다! Java에서 정규 표현식을 이스케이프 처리하십시오. 그리고 때로는 리터럴 패스를 사용하지 않습니다. 필요할 때 사용합니다. LiteralPath는 와일드 카드 문자를 그대로 처리하며 확장하지 않습니다. 파일에있을 때 사용합니다. 더 많은 옵션을 제공합니다.
manojlds

3
@manojlds : bash 쉘과 비교하여 Powershell은 이해가되지 않고 혼란 스러울 수있는 불일치로 가득합니다. bash에서는 모든 곳에서 동일한 이스케이프 문자를 사용하고 문자열과 마찬가지로 파일 경로가 이스케이프됩니다. 특별한 매개 변수가 필요하지 않습니다. 특수 문자가 포함 된 변수를 확장하면 큰 따옴표로 묶고 내용이 안전하므로 다시 이스케이프하기 위해 함수를 호출 할 필요가 없습니다.
Zan Lynx

5
@Zan Lynx-불일치가 없습니다. 심지어 write-output "this is a `"test`""작동합니다. ``\`대신에 사용하십시오 . regex :: escape는 탈출하는 것을 놓치지 않도록 도와줍니다. 사용할 필요는 없습니다. 당신은 당신을 돕고 실수를 예방하기위한 추가 옵션이 불일치라고 생각하고 있습니다.
manojlds

6

최근의 실험으로 인해 PowerShell 및 .NET 호출이 심화되었으므로 PowerShell Cygwin 및 Unix 셸을 대체 할 수 있다고 말해야합니다 .

나는 Perl에 대해 확신하지 못하지만 PowerShell과 Perl은 프로그래밍 언어로 Turing이 완벽하기 때문에 Perl을 대체하는 것에 대해서도 그렇습니다.

PowerShell이 ​​* nix에서 Cygwin과 일반 Bash보다 높은 점은 샌드 박스 DLL 호출을 수행하고 직접 API 호출, WMI 메서드 및 COM 개체를 통해 운영 체제를 조작하는 기능입니다. 코드를 통해 Internet Explorer를 시작한 다음 표시된 문서로 원하는 것을 수행하여 웹 서버의 백엔드를 효과적으로 모방하는 것은 어떻습니까?

SQL 서버 및 기타 데이터 제공 업체에서 데이터를 수집하고이를 구문 분석하여 CSV, 메일 메시지, 텍스트 및 실제로 기존 및 존재하지 않는 파일 형식으로 내보내는 것은 어떻습니까? (물론, 수신 된 데이터에서 유효한 파일을 만드는 적절한 기술이 있지만 CSV를 쉽게 사용할 수 있습니다).

또한 서명 된 cmdlet 및 스크립트, 그룹 정책 및 실행 정책을 통해 사용 가능한 추가 보안 기능이있어 관리자로 실행하더라도 시스템에서 악성 코드가 실행되지 않도록합니다.

구현 된 명령 정보-Richard의 답변과 해당 기능을 이미 에뮬레이트 한 PowerShell의 기능이 나와 있습니다.

PowerShell이 ​​전환을 보장해야하는지 여부에 대한 정보-점점 더 많은 Windows 서비스가 PowerShell cmdlet을 제공하여 PowerShell cmdlet을 제공하여 PowerShell을 제공하지는 않지만 이러한 서비스를 제공하는 것은 장애로 간주되지만 이는 개인 취향의 문제입니다. (Hyper-V 서버는 이러한 주요 서비스이며 GUI보다 PowerShell cmdlet으로 더 많은 기능을 제공합니다!)

아마도이 답변은 5 년 늦었지만 여전히 누군가 Windows에서 다양한 작업에 대한 관리 작업이나 일반 스크립팅을 수행하는 경우 목적에 맞게 PowerShell을 사용해야합니다.


6

PowerShell을 Cygwin / Perl / Shell 조합과 비교할 때 PowerShell은 해당 조합의 "쉘"부분 만 나타냅니다.

그러나 cmd.exe 또는 Cygwin에서와 마찬가지로 PowerShell에서 명령을 호출 할 수 있습니다. 지정된 함수를 다시 구현 하지 않으며 Perl과 비교할 수 없습니다.

셸일 뿐이지 만 .NET 유니버스에 편안한 인터페이스를 제공하여 프로그래밍이 쉬워집니다.

또한 PowerShell에는 Windows XP, Windows Server 2003 이상이 필요하며 IT 인프라에 따라 문제가 발생할 수 있습니다.

최신 정보:

나는 어떤 종류의 철학적 논쟁이 일어날 지 전혀 몰랐다.

나는 PowerShell과 Cygwin 및 Perl 및 Bash를 비교하는 질문에 대한 답변을 게시했습니다.

PowerShell은 기본 제공 명령, 커맨드 렛, 사용자 기능 및 외부 명령 (.exe, .bat, .cmd)간에 구문상의 차이가 없으므로 셸입니다. 호출에 네임 스페이스 나 개체를 추가하면 .NET 메서드를 호출하는 것만 다릅니다.

프로그래밍 기능은 PowerShell "언어"에만 국한된 것이 아니라 .NET 프레임 워크에서 파생됩니다.

Bugzilla 또는 MediaWiki 가 웹 서버에서 실행되는 PowerShell 스크립트로 구현 되 자마자 PowerShell이 ​​"스크립트 언어"라고 생각 합니다.)

그때까지 비교를 즐기십시오 .


예, 유닉스 "쉘"에 대해 이야기 할 때 grep, awk 등과 같이 유닉스와 함께 제공되는 모든 일반적인 유틸리티를 언급하고있는 것 같습니다. PowerShell이 ​​비슷한 유틸리티를 제공하지 않는지 궁금합니다. -상자.
Andy White

3
Powershell은 "단지 쉘"이 아닙니다. 스크립팅 언어입니다. 펄과 비교할 수없는 방법이 궁금합니다. 나는 그것이 성숙하지 않다는 것을 인정하지만 그 너머에는 차이가 보이지 않습니다.
EBGreen

@EBGreen,이 의견과 정확히 무슨 뜻입니까? 모든 쉘 또는 스크립팅 언어는 본질적으로 비슷하지만 PowerShell의 특정 기능과 bash / perl / 기타 유닉스 쉘 / 스크립팅 언어에 대해 더 궁금합니다.
Andy White

2
Powershell에는 매우 다양한 기능이 있습니다. 대화 형의 작성 가능한 쉘-풍부한 대화 형 스크립팅 언어-프로그래밍 언어 풍부한 OO 및 tesxt 유틸리티 기능 (예 : grep / awk / etc와 등가)도 있습니다.
Jeffrey Snover-MSFT 0

1
@Andy-Devio는 powershell이 ​​Perl만큼 강력하지 않다고 말했습니다. 나는 그것이 사실이라고 믿지 않으며 그가 왜 그것이 사실이라고 생각하는지 궁금했습니다.
EBGreen

4

PowerShell의 cmdlet은 매우 훌륭하고 안정적으로 작동합니다. Java / C # 개발자이기 때문에 객체 지향성이 나에게 호소력이 있지만 완전한 세트는 아닙니다. 그것의 객체 지향하기 때문에,이 많이 놓쳤다있어 텍스트 스트림 는 POSIX 도구 세트의 성숙 ( awksed몇 가지 이름).

POSOO 도구에서 OO 기술을 사랑하고 성숙함을 사랑한다는 딜레마에 대한 최고의 답변은 두 가지를 모두 사용하는 것입니다! PowerShell의 큰 특징 중 하나는 객체를 표준 스트림으로 파이핑하는 작업이 훌륭하다는 것입니다. PowerShell은 기본적으로 개체 파이프 라인을 사용하여 개체를 전송합니다. 이들은 표준 스트림이 아닙니다 (표준 출력, 표준 오류 및 표준 입력). PowerShell은 출력을 개체 파이프 라인이없는 표준 프로세스로 전달해야 할 때 먼저 개체를 텍스트 스트림으로 변환합니다. 이 작업은 잘 수행되므로 PowerShell은 POSIX 도구를 호스팅 할 수있는 훌륭한 장소입니다.

최고의 POSIX 도구 세트는 GnuWin32 입니다. 설치하는 데 5 초 이상이 걸리지 만 문제의 가치가 있으며 내가 알 수있는 한 c:\windows\*파일을 지정한 디렉토리에 복사하는 것을 제외하고 시스템 (레지스트리, 폴더 등)을 수정하지 않습니다 . 도구를 공유 디렉토리에 넣으면 많은 사람들이 동시에 도구에 액세스 할 수 있기 때문에 이것은 매우 좋습니다.

GnuWin32 설치 지침서

적절한 디렉토리를 가리키는 exe ( SourceForge 사이트에서 제공 )를 다운로드하여 실행하십시오 (사용하겠습니다 C:\bin). 그것은 GetGnuWin32당신이 실행할 디렉토리 를 생성 한 download.bat다음 install.bat(매개 변수없이) C:\bin\GetGnuWin32\gnuwin32\binWindows 시스템에 존재했던 가장 유용한 폴더 인 디렉토리를 만듭니다. 해당 디렉토리를 경로에 추가하면 준비가 된 것입니다.


4

TL; DR-저는 Windows 나 PowerShell을 싫어하지 않습니다. 난 그냥 수 없습니다 Windows에서 또는 PowerShell을 아무것도.


개인적으로 여전히 PowerShell이 ​​압도적이라는 것을 알았습니다.

  • 디렉토리 경로의 탭 완성은 복잡하지 않으므로 사용자는 모든 이름 완성 후에 경로 구분 기호를 입력해야합니다.
  • 윈도우도 경로 또는 경로가 무엇인지의 개념이없는 것처럼 여전히 액세스 가능한 사용자 홈 표시와 함께, 기분이 ~/약간 부족@environment://somejibberish/%user_home%
  • NTFS 는 여전히 엉망이며 항상있을 것입니다. 행운을 빕니다.

  • cmd-esque 인터페이스, 공룡 cmd.exe는 PowerShell에서 여전히 표시됩니다. 편집표시는 여전히 정보를 복사하는 유일한 방법이며, 표시되는 터미널 공간의 사각형 블록 형태로만 복사됩니다. 그리고 EditMark는 여전히 터미널에 문자열을 붙여 넣는 유일한 방법입니다.

  • 파란색으로 칠해도 더 이상 매력적이지 않습니다. 그래도 Microsoft 개발자는 색상이 맛이 없습니다.

  • Windows는 항상 화면 왼쪽 상단에서 열립니다. 수직 작업 표시 줄을 사용하는 사람에게는 특히 Windows 작업 표시 줄이 복사 / 붙여 넣기 기능에 액세스 할 수있는 창의 유일한 모서리를 덮을 것이라는 점을 고려할 때 매우 짜증납니다.

Windows에 포함 된 도구를 바탕으로 말할 수는 없습니다. 전체 오픈 소스, 무료 라이센스 CLI 도구 세트가 있으며 PowerShell은 내가 아는 한, 전혀 실망하지 않습니다.

  • PowerShell wget은 GNU wget과 비교할 수없는 논쟁을합니다. 고맙게도 쓸모없는 희망의 희미한 빛.
  • PowerShell POSIX는 Bash와 호환되지 않으며, 특히 &&연산자가 처리되지 않으므로 조건부 명령을 가장 간단하게 수행 할 수 있습니다.

나는 사람을 모른다; 나는 그것을 주사했다, 나는 정말로했다; 나는 여전히 다음에 그것을 열 때 그것이 덜 쓸모 없을 것이라는 희망으로 그것을 주사하려고합니다. 나는 PowerShell에서 아무것도 할 수 없으며 GNU 도구를 Windows로 가져 오기 위해 실제 프로젝트로 거의 할 수 없습니다.

MySysGit은 나에게 몇 가지 GNU 도구가 포함 된 공룡 cmd.exe 프롬프트를 제공하며 여전히 매우 압도적이지만 마침내 경로 완성 작업이 이루어집니다. 그리고 Git 명령은 Git Bash에서 실행됩니다.

MySysGit 용 Mintty는 mysysgit 환경에 Cygwin 인터페이스를 제공하여 복사하여 붙여 넣기 (복사 (마우스), Shift+ Ins붙여 넣기, 얼마나 현대적 ...)를 선택합니다. 그러나 git pushMintty에서는 이와 같은 것들이 깨졌습니다.

나는 의미하지는 않지만 Cygwin과 같은 도구를 사용하더라도 Windows에서 명령 줄 유용성에 여전히 큰 문제가 있습니다.


추신 : PowerShell에서 무언가 할 수 있다고해서 사용할 수 는 없습니다 . 유용성은 능력보다 깊으며 제품을 소비자로 사용할 때 집중하는 경향이 있습니다.


빠른 편집 모드를 켜시겠습니까? 선택하고 Enter 키를 눌러 복사하고 ctrl-v를 붙여넣고 더 이상 편집-> 마크 또는 편집-> 붙여 넣기를하지 마십시오. 환경 설정에서 창 위치를 설정하고 "시스템 위치 창을 선택하십시오"를 선택 해제하십시오. 탭 완성은 파일 시스템 경로를 완성하는 것이 아니라 변수 이름, 명령 이름, 객체 속성을 완성 하는 것입니다. 속성이나 색인 을 입력 .하거나 [액세스하려고 할 때 끝에 경로 구분 기호를 추가 할 수는 없습니다. 정확히 어떤 PowerShell이 ​​작동합니까? 어떤 PowerShell POSIX? gnu 도구를 Windows로 가져 오거나 bash 호환 btw가 아닙니다.
TessellatingHeckler

그래, 나는 그것이 bash가 되려는 것이 아니라는 것을 안다. 나는 원래 게시물에서 그렇게 말하지 않았다. 나는 어느 w가 바이너리를 얻는 지 말하지만 power shell에는 "which"명령이 없다고 말하고 싶습니다 : (내가 구입 한 power shell을 POSIX와 호환해야한다고 생각하지 않습니다
ThorSummoner

5
다시 : "아니오"-> (get-command wg*.exe).Path. 재 : bash는 완료와의 readline -> leeholmes.com/blog/2012/09/13/...은 이어지는 github.com/lzybkr/PSReadLine
TessellatingHeckler

2

나는 아직 PowerShell이 ​​실제로 이륙 한 것을 보지 못했습니다. 따라서 팀의 다른 사람들이 이미 알지 못한다면 배우려는 노력을 기울일 가치가 없습니다.

곤경에 처한 사람들은 다른 사람들이 뒤따를 수있는 스크립트 언어, 언급 한 것처럼 Perl 또는 Ruby 나 Python과 같은 다른 언어를 사용하는 것이 좋습니다.

나는 그것이 당신이해야 할 일에 달려 있다고 생각합니다. 개인적으로 필자는 개인적 스크립트로 파이썬을 사용하고 있지만, 절대 전달할 수없는 무언가를 작성하기 시작하면 너무 혁신적인 것을 시도하지 않습니다.


2

왜 둘 다 사용하지 않습니까? Perl 등과 같은 다른 해석 스크립트와 마찬가지로 Cygwin에서 PowerShell 스크립트를 호출하십시오.

Cygwin에서 Bash 래퍼가 https://bitbucket.org/jbianchi/powershell 을 작성 하여 powershell.exe를 호출 하기에 충분합니다 . powershell.exe .ps1 스크립트의 첫 번째 줄로 shebang 으로 사용될 수 있습니다 (PowerShell은 "#"을 주석으로 사용하기 때문에). 예를 보려면 https://bitbucket.org/jbianchi/powershell/wiki/Home 을 참조 하십시오.


1

몇 줄에서 Cygwin과 PowerShell은 다른 도구이지만 Cygwin이 설치되어 있으면 PowerShell 세션 내에서 Cygwin 실행 파일을 실행할 수 있습니다. PowerShell에 익숙해 졌으므로 이제는 grep, sort, awk 등을 더 이상 사용하지 않습니다. PowerShell에는 기본 제공되는 대안이 많이 있으며, 그렇지 않은 경우 cmdlet을 찾을 수 있습니다.

내가 사용하는 주요 도구는 ssh.exe이지만 PowerShell 세션 내에 있습니다.

잘 작동합니다.


0

PowerShell 프로그래밍이 그만한 가치가 없다는 것을 알았습니다.

유닉스 환경에서 몇 년 동안 쉘 스크립팅에 대한 경험이 있지만 PowerShell로 많은 작업을 수행하는 것이 매우 어렵다는 것을 알게되었습니다.

많은 기능을 사용하려면 Windows 관리 인터페이스를 조사하고 필요한 정보를 얻기 위해 SQL과 같은 명령을 실행해야합니다.

예를 들어, 디렉토리 트리에서 특정 접미사가있는 모든 파일제거 하는 스크립트를 작성하려고했습니다 . 유닉스에서 이것은 간단합니다 ...

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

몇 시간이 주변에 dicking 후 Scripting.FileSystemObjectWScript.Shell와 발행 '& 드라이브 & "AND 경로 ='"& searchFolder & " '", 나는 마침내 포기했다 "Win32_ShortcutFile 드라이브 = SELECT * FROM"'Windows 탐색기의에 대한 정착 검색 명령 그냥 수동으로 수행하십시오. 아마도 내가 원하는 것을 할 수있는 방법이 있을지 모르지만, 명백한 것을 보지 못했고 MSDN 사이트의 모든 예제는 무의미합니다.

편집 Heh, 물론 이것을 작성하자마자 나는 더 많은 것을 찔 렀고 내가 잃어버린 것을 발견 -recurse했습니다. remove-item 명령 옵션이 잘못되었습니다 (을 사용하면 공개 get-help remove-item -detailed).

나는 "remove-item -filter '* .xyz'-recurse"를 시도했지만 작동하지 않았으므로 포기했습니다.

당신이 사용해야한다는 것이 밝혀졌습니다 get-childitem -filter '*.xyz' -recurse | remove-item


16
WSH (Windows Scripting Host)와 PowerShell을 혼동하고 있다고 생각합니다. 그들은 완전히 다릅니다.
Erik Funkenbusch

3
예를 들어, .TMN으로 끝나는 모든 파일을 삭제하려면 get-childitem c : \ -include * .TMN -recurse | foreach ($ _) {remove-item $ _. fullname}
Erik Funkenbusch

@ Mystere : 이것을 시도했지만 작동하지 않는 것 같습니다. 약간 futzing 후 * .tmn은 (.tmn 대신) 필요한 것 같습니다.
redtuna

5
나는 더 정중하게 반대 할 수 없었고, 나는 결코 Windows 녀석이 아닙니다. PS는 bash보다 스크립트하기가 훨씬 쉽습니다. PS는 더 일관성이 있습니다. Bash를 사용하면 호출하는 모든 콘솔 유틸리티에는 고유 한 구문과 고유 한 동작이 있으며 bash 구문 자체는 다소 암호화되어 있습니다. PS는 익명 함수, (스크립트 블록), 매개 변수 유효성 검사, 고급 기능 등과 같은 언어 기능과 함께 이식성이 훨씬 뛰어납니다. 주로 가장 큰 이유는 당신이 PS에 대해 항상 듣는 것입니다. Bash는 여전히 빠릅니다.
user2233949


0

PowerShell은 표준 내장 Unix 셸보다 훨씬 강력하고 강력합니다 (하위 프로그램에 일반적으로 셸된 많은 기능이 포함되어 있기 때문에). 또한 다음을 포함하여 모든 .NET 언어로 애플릿을 작성할 수 있습니다. IronPython , IronRuby , PerlNet 하거나 PowerShell에서 Cygwin 명령을 호출하여 추가 기능을 모두 무시할 수 있으며 Bash, KornShell 과 유사하게 작동합니다 . 또는 무엇이든...


유닉스 쉘의 디자인 목표를 놓치고 있다고 생각합니다. PowerShell을 두드리지 말고 (자신을 배우고 싶음) Unix 툴링을 이해하여 그와 같은 진술을해야합니다.
Jé Queue

2
@Xepoch-아니요, PowerShell의 디자인 목표가 빠진 것 같습니다. PowerShell은 Unix 쉘이 수행 할 수있는 것과 동일한 방식으로 수행 할 수있는 모든 작업을 수행 할 수 있습니다. 그러나 텍스트 출력을 파싱하는 대신 PS의 객체 배관 시스템을 사용하면 진정한 힘을 얻을 수 있습니다. 따라서 PowerShell은 bash 또는 korn이 수행 할 수있는 작업을 정확하게 수행 할 수 있지만 PowerShell이 ​​수행 할 수있는 작업은 수행 할 수 없습니다.
Erik Funkenbusch

3
필자는 단순히 PowerShell을 잘 알지 못하지만 Unix 쉘의 목표는 외부 툴링을 완전히 포괄적으로 대체 할 필요는 없으며 그 주위의 제어 구조입니다. 다시 말하지만 현재는 비교할 수없고 대비할 수는 없지만 더 많은 내장 기능이 포함 된 PowerShell을 높이는 것이 반드시 유닉스 쉘의 장점은 아닙니다.
Jé Queue

@ Xepoch-요점은 원하는 방법을 선택할 수 있다는 것입니다. 내장 쉘의 장점을 모두 사용하거나 Unix가하는 방식을 무시하고 수행 할 수 있습니다. 당신의 선택입니다. 그리고 선택이 좋습니까?
Erik Funkenbusch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.