2014-12-29 3 views
1

커스텀 PowerShell CMDLet과 콘솔 애플리케이션을 빌드 할 때의 지침/문서를 찾고 있는데, CMDLet 사용에 익숙하지 않은 특정 경계가 있는지 궁금합니다. 이 질문을보다 구체적이고 답할 수있는 시나리오로 만들려면 다음과 같이하십시오.커맨드 렛 대 콘솔 앱

스크립팅 가능한 데이터 가져 오기를 해결하려고합니다. 가져 오기는 데이터 읽기/쓰기를 허용하는 웹 서비스를 제공하는 플랫폼에 대해 수행됩니다.

I 다음 (높은 수준) 요구 사항이 있습니다

  • 를 호출 웹 서비스를 가져온 데이터가 존재 (아마 갱신 필요)
  • 읽기 (CSV) 가져 오기 파일을 여부를 확인하기 위해 데이터를 검색 최대 크기 25메가바이트
  • 읽기 복잡한 XML 매핑이 스크립트로
  • 요구에 최대 크기를 2MB의 파일
(자동 배포, 자동화 된 빌드 프로세스의 일부로 사용)

나는 이제 CMDLet으로 모든 것을 할 수 있는지 의심 스럽지만 CMDLet이 올바른 선택인지 궁금하다. 나는 나의 특정한 상황에 대한 해답을 찾고있다. 그러나 CMDLets로 시작한 이래로 여기에서 선택을하는 방법에 대한 추가 정보를 매우 고맙게 생각한다. 제 생각에는

+0

고급 기능을 사용하여 PS 모듈로 솔루션을 제공하지 않는 이유는 무엇입니까? – mjolinor

+0

mjolnor 그게 내가 간다고, 나는 아마도 간단한 매개 변수와 함께 가져 오기를 허용하는 모듈을 구축하고 있습니다. 내 verbage를 고쳐 주셔서 고마워요. – AlexR

답변

3

, 그것은 cmdlet을을 구축하는 확인 아니다 간호원 두 번

    당신은 그것을 빨리 구축해야하고 그것은 단지 (짧은 시간), 작업을 할 필요가, 또는 돈
  1. PowerShell을 사용하는 방법을 알고있는 많은 직원이 있습니다.

  2. 당신은 리눅스/맥 등을 제외하고 내가 유연성 PowerShell을 사용하면이 cmdlet을에게 더 생각할를 구축하지하게 제공합니다 생각에서

에 모노 프로젝트를 통해 크로스 플랫폼하기 위해 스크립트 가져 오기를해야합니다.

가져올 수있는 powershell 모듈에서 가져 오기 논리를 CMDLet으로 빌드하면 전체 .net 프레임 워크를 CMDlet에 대한 powershell 스크립트로 활용할 수 있습니다.

powershell에서는 게이트에서 바로 요구 사항을 얻을 수 있습니다.

  1. CSV 파일, 파워 쉘 할 수있는 당신이 아무것도
  2. XML 파일을 코딩 할 필요없이 파이프 CSV 파일, 파워 쉘 수도 파이프 XML
  3. 스크립트 작성 : PowerShell을 스크립트 엔진입니다.
  4. Web 서비스를 호출 : 파워 쉘 명령 라인에 대한 콘솔 응용 프로그램을 구축하는 더 나은 대안이 될 수 있도록 설계되었습니다 Powershell can also call web services

. 따라서 제 의견으로는 파워 쉘의 힘을 이용하는 것이 결코 나쁜 생각이 아닙니다.

실제로 콘솔 앱에서 전체 powershell 프레임 워크를 실행하여 콘솔 앱을 powershell 명령 줄로 돌릴 수 있으며 구현하기가 쉽습니다.이 수입 논리가 사용자 지정 모듈을 통해의에

Writing a Powershell Host Application

우리의 데이터베이스 프로젝트는 PowerShell을 사용합니다. 나 같은 일을 할 수 있도록 허용

  1. 마이그레이션 - 종업원 -source LegacyProd -destination 생산성
  2. 마이그레이션 - 모든
  3. XYZDB-GetEmployee라는이 603 -EmployeeID -source LegacyProd -destination 생산성
  4. XYZDB-GetCustomer - 고객 ID 000567
  5. XYZDB-GetCustomer | 고객 ID, 이름, 주소 선택 | 출력 파일 c : \ customerDump.txt

기타주의 사항 # 5 이것은 powershell을 훌륭하게 만드는 것입니다. # 5에서 모든 고객이 CustomerID, Name 및 Address 만 선택하고 참조 용 텍스트 파일로 덤프합니다. 나는 GetCustomer CmdLet을 코딩 할 필요가 없었고 나머지는 모든 powershell 기능이다.

+0

이것은 내가 찾고 있었던 것이다. 가져 오기 및 웹 API에 사용할 수있는 몇 가지 최적화 기능이있는 SDK가 있으므로 가져 오기를 수행하는 모듈을 구축 할 것입니다. 이 SDK는이 경우 서버/서비스 전반에서 공통적이므로 이러한 종속성을 갖는 것이 바람직합니다. CMDLet이 "너무 많이"또는 기술적 인 제한을 가하는 것에 대한 우려가없는 것처럼 보입니다. 당신은 저보다 더 나은 길을 택했습니다. – AlexR

+0

powershell 2 또는 버전 3 만 지원하려는 경우 고려해야 할 사항이 하나 있습니다. 버전 3에서 모듈을 만드는 방법은 버전 2와 다릅니다. 예 : 버전 2에서는 Add-PSSnapIn을 사용하여 dll을 SnapIn으로 실제로 등록합니다. 버전 3에서는 물건을 모듈로 디자인하고 가져 오기 - 모듈을 사용할 수 있습니다. 함께 작업하는 모든 서버가 버전 3을 가지고 있거나 설치 한 경우, 그와 함께 갈 것입니다. –