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
으로 바뀌었습니다.
한글로 설명하는데 좀 서툴러서 죄송합니다.