2014-09-18 2 views
2

큰 파워 스크립트 프로젝트로 작업하겠습니다. 내 파일에 대한 아키텍처를 만들고 유지 관리하기 쉽도록 만들고 싶습니다.여러 파일의 스크립트를 사용하여 PowerScript 모듈 만들기

각 기능을 별도의 ps1 파일에 넣으 려하므로 개별적으로 관리 할 수 ​​있습니다.

예를 들어, ps1 개의 파일에서 FunctionA, FunctionB 등의 파일을 불러오고 싶다고 가정 해 보겠습니다.

그런 다음이 두 함수의 집합 인 MyFunctions.psm1을 갖고 싶습니다.

psm1 파일에 함수를 직접 쓰고 싶지 않습니다. 파일에 함수를 별도로 작성한 다음 모듈에 집계하려고합니다.

집계 작업은 프로젝트 작성과 비슷합니다.

내 유토피아는 ps1 파일을 추가 할 수있는 Visual Studio 프로젝트이며, 프로젝트를 빌드하면 psm1 파일이 생성됩니다.

PowerShell 프로젝트 템플릿을 추가하는 Visual Studio Extension 인 CodePlex project (PowerGUI)을 찾았습니다.

하지만 불행히도이 코드는 psm1 자동 생성되지 않습니다.

질문 1 :이 기능을 프로젝트에 추가 할 수있는 방법이 있습니까 (예 : Build Events에 뭔가 추가).

질문 2 :ps1 개의 파일에서 psm1 파일을 만드는 또 다른 방법이 있습니까? Aggregate-Functions cmdlet 또는 function과 같은 것!?

+0

당신의 기능이 매우 복잡하지 않는 한, 기능마다 하나 개의 파일을 가진 것은 물류 악몽이라고 생각하지 않으며, 오랫동안 (유지 보수 악몽이되는 ...)? –

+0

@DavidBrabant Visual Studio 프로젝트에서이 프로젝트를 사용하면 합리적입니다. 각 파일은 체크인 및 체크 아웃 할 수 있습니다. 따라서 여러 개발자가 동시에 작업 할 수 있습니다. 그럼 왜 악몽이 될까? 아마도'모듈들 '을 최종 모듈로 모으는 것이 더 좋은 질문일까요? – mehrandvd

+0

@DavidBrabant - 당신은 차라리 수천 줄의 코드를 훑어 보거나 정확히 포함하고있는 내용 만 포함하는 파일을 분리해야합니까? 나는 전자와 함께 시작했다, 그것은 절대 혼란이었다. 나는 지금 전자를 사용하며 작업하기가 놀랍도록 쉽습니다. 나는 그것이 주관적이고, 최종 사용자의 툴링과 경험에 달려 있다고 생각한다. –

답변

2

psm1에서 도트 소싱을 사용하면 매우 간단합니다. 예 : 모듈 디렉토리에 우리는이 :

func1.ps1

function func1 { 
    'Hello from func1' 
} 

func2.ps1

function func2 { 
    'Hello from func2' 
} 

test.psm1

. $PSScriptRoot\func1.ps1 
. $PSScriptRoot\func2.ps1 

이 그 것이다, 모듈이 준비가되어 있습니다. 이제이 코드 모듈을 수입하고 테스트 func1func2 :

Import-Module .\test.psm1 
func1 
func2 

출력 :

Hello from func1 
Hello from func2 
+0

좋은 조언입니다. 또한 파일 이름을 하드 코딩하지 않고 PowerShell을 사용하여 가져올 수 있습니다 (예 : Get-ChildItem, 루프, 파일로드 시도, 오류 잡기). 어쩌면 Export-ModuleMember를 사용하면 쉽게 구분할 수 있도록 개인용 기능을위한 별도의 지점을 가질 수 있습니다. 건배! –

관련 문제