2013-11-24 4 views
0

PSClass - Object Oriented Scripting in Powershell을 내 PowerShell 제작에서 간단한 OOP 표기법을 사용하는 매우 유망한 방법으로 생각합니다.PSClass를 모듈로 변환하는 방법은 무엇입니까?

원래 PSClass.ps1 구성의 장점은 New-PSClass 호출에서 매우 의사 소통이 가능한/자체 설명이 가능한 스크립트 블록을 사용할 수 있다는 것입니다.

OOP 구문을 사용자 코드에서 사용하려면 먼저 실행해야하는 스크립트로 구성됩니다.

제 생각에는 Import-Module cmdlet으로 가져올 수있는 표준 PoweShell 모듈 (예 : PSClass.psm1)로 변환하는 것입니다. PSClass.ps1의 콘텐츠가 PSClass.psm1 서브 루틴 note에 직접 포함될 때 constructor, property, methodExport-ModuleMember으로 표시되지 않습니다. 내가 같은 간단한 PSClass.psm1 정의를 사용하는 경우에도 :

. .\PSClass.ps1 

Export-ModuleMember -Function @('New-PSClass') 

여전히 서브 루틴

noteconstructorproperty, methodExport-ModuleMember으로 수출 할 수 없습니다.

PSClass.ps1 스크립트를 완벽하게 기능하는 모듈로 보존 방법을 설명하는 스크립트 블럭을 New-PSClass 호출로 만드는 방법에 대한 힌트가 있습니까?

답변

0

개인적으로 PSClass.ps1의 이름을 PSClass.psm1로 변경하고 Export-ModuleMember 명령을 PSClass.psm1 파일에 넣습니다. PSClass.psm1 안에 PSClass.ps1을 소싱하는 데는 아무런 가치가 없습니다. 이제 단 하나가 아닌 재 시야를 넘기는 두 가지 수업이 있습니다.

이 스크립트보고 후, 나는 PSClass.psm1 파일의 끝에이를 추가 : 나는 첫 시도로했던

Export-ModuleMember -Function New-PSClass, constructor, note, property, method 
+0

. 그것은 실패했다. 너 성공 했니? – utom

+0

아 나는 문제를 본다. 생성자, 노트 등 함수는 New-PSClass 함수 내에 중첩되어 있습니다. AFAICT 중첩 된 함수를 내보낼 수 없습니다. 이러한 기능을 모듈 범위로 가져와야하고 누가 그 기능을 망가뜨릴 지 누가 압니다. –

관련 문제