Compartilhar via


Monad

 Roadmap:

 

Scenario Today Tomorrow
GUI Shell MMC MMC with snap-ins layered on Monad
Command Shell CMD CMD SH CSH KSH Monad
Command Scripting CMD scripting CMD scripting Monad
COM Scripting WSH * VBScript * Jscript WSH * VBScript * Jscript Jscript (.NET)Monad

 

Monad (MSH, Microsoft Command Shell - Powershell). Haskell의 입출력용 타입인 모나드와는 전혀 틀리다.

 

What is Moand Cmdlet?

 

1. Cmdlet : 발음은 커맨드랫 또는 커맨드릿 ("command let")

 

2. MSH의 light-weight command를 나타낸다.

 

유닉스의 쉘이나 기존의 윈도우 도스 커맨트 창에서는 일부 내부 명령 (instrinsic command)를 제외한 대부분의 명령은 일반 Exe파일 또는 스크립트 파일이며 새로운 커맨드의 추가가 어려웠다. 그 반대라는 의미이다. 즉, 새로운 명령어의 추가가 쉽고 이들이 반드시 새로운 Exe일 필요는 없다는 뜻이다.

 

요약하자면 다음과 같은 특성을 가진다 :

 

- .Net 클래스의 인스턴스 (Instance)이며 개별적인 실행 파일이 아니다.

- 단지 몇줄의 소스로 제작이 가능하다.

- 파라미터 내지는 자료의 파싱, 에러 출력 또는 출력 및 포맷팅을 수행 하지 않으며 이는 기본 기능으로 제공 된다.
    * 입력 파라미터의 처리 또는 사용자 입력을 받기 위해서 Attributes를 사용해야 한다.

    * 결과 및 에러 출력을 위한 공통 API가 제공된다.

- 기존의 쉘과는 달리 입출력에 텍스트 스트림이 아니라 *객체*가 사용된다. 파이프라인을 통해서도 *객체*가 전달이 된다.

- 처리는 레코드 단위로 한번에 하나씩의 객체를 처리한다.

 

.Net Framework의 managed code인 Cmdlet을 작성하기 위해서는 다음의 기준을 따라야 한다 :

- Cmdlet을 구현하는 클래서는 직/간접 적으로 System.Management.Automatiuon.Cmdlet으로 부터 상속을 받아야 한다. (당연히)

 

- Metadata attribute [System.Management.Automation.Cmdlet(...)]이 클래스 소스에 정의 되어야 한다.

 

- BeginProcessing(), ProcessRecord()와 EndProcessing()과 같은 Virtual Method 중 적어도 하나 이상 override 되어 정의 되야 한다.

 

- Managed Code 인 만큼 언어에 대한 제약이 거의 없다. 따라서 C++, C#, VB.Net중 원하는 언어를 통하여 구현이 가능하다.

 

기타 정보 :

HKLM:\Software\Microsoft\MSH\[Namespace.ShellName]

 

https://www.powershell.com/ 도 한번 봐 주세요.

Comments

  • Anonymous
    July 16, 2006
    아, 한글로 PowerShell에 대하여 읽어보기는 처음이네요. 정말 잘 읽었습니다.

    하지만 Monad나 Msh아니면 Microsoft Command Shell이라고 하는 것보다는 PowerShell이라고 불러주는게 났다고 생각합니다.  

    PowerShell Team Member들은 이름이 바뀌었을때에 PowerShell이라고 공식적인 자리에서 쓰라고 하는말을 들었습니다.

    Ah, 그리고, Powershell에서, Registry Path는 HKLM:SoftwareMicrosoftMSH[Namespace.ShellName] 에서 HKLM:SOFTWAREMicrosoftPowerShell1ShellIds[Namespace.ShellName]으로 바뀌었습니다

    또한, 화일 확장명은 "*msh"에서 ".ps1"으로.(1은 Version1을 지칭, Version2는 *.ps2로 갈것이라고 들었슴.)

    한가지 더 바뀐것은, Profile path와 Profile file 명입니다.

    C:Documents and SettingsAll UsersDocumentsMSHprofile.msh
    에서
    C:Documents and SettingsAll UsersDocumentsPSConfigurationprofile.ps1
    으로 바뀌었습니다.


    한글로 설명하는데 좀 서툴러서 죄송합니다.