2012-02-01 2 views
5

필자는 powershell을 처음 사용하고 here (script itself)이라는 예제 스크립트를 사용하여 파일 해시를 계산하려고했습니다.언제든지 호출 할 수있는 powershell 스크립트를로드하십시오.

나는 단지 내가 발견

Get-Filehash E:\testfile.bin 

입력 않는 저자처럼 사용할 수 있도록하려면 그러나

. 'E:\Tools\Power Shell Scripts\Get-FileHash.ps1' E:\testfile.bin 

내가 할 수있는 나는 점 표기법을 사용하여 작업을 얻을 수

function Get-FileHash {. 'E:\Tools\Power Shell Scripts\Get-FileHash.ps1'} 

하지만 제대로 작동하지 않으면 내가 할 때 파일을 요청하는 메시지가 표시됩니다. Get-Filehash E:\testfile.bin

이 스크립트를 올바르게로드하려면 내 프로파일 스크립트에 무엇을 넣어야합니까? Get-Help Get-FileHash이 올바르게 작동합니까?

답변

9

실제로이 상황에서 스크립트 대신 모듈에 함수를 넣는 것이 좋습니다. 소리가 나는 것처럼 불길한 점은 포함 파일의 이름을 .ps1 확장자의 이름을 .psm1으로 바꾼 다음 문서 디렉토리 (...\Documents\WindowsPowerShell\Modules\<Name>\<Name>.psm1) 아래에 저장하는 것입니다. 여기서 <Name>은 파일의 기본 이름입니다.

그런 다음이 명령을 사용하여 모듈을로드 :

Import-Module Name 

이 일단로드, 당신은 모듈 뿐만 아니라 명령을 인식 할 수 가져 오기 - 도움말에 포함 된 함수를 호출 할 수 있습니다. 모듈은 캡슐화를 제공하여 하나의 파일이 다른 파일의 컨텍스트 공간을 오염시키지 않도록합니다. 그런데 C#에서 cmdlet을 작성할 필요가 없습니다. PowerShell 자체에서 작성할 수도 있습니다. 예를 들어 PowerShell로 작성된 open-source PowerShell library을 살펴보고 Get-Help으로 인식되는 많은 도움을 얻을 수 있습니다.

실제로 함수와 모듈을 사용할 때 얻을 수있는 이점은 많이 있습니다. Simple-Talk.com의 내 기사 Down the Rabbit Hole-A Study in PowerShell Pipelines, Functions, and Parameters을 참조하십시오.

+0

감사합니다. 그 방법은 내가 찾고 있던 정확한 것이 었습니다. Start-up 스크립트에 Import-Module을 넣어야합니까, 아니면 한번만해야합니까? –

+0

다릅니다 :-) 일반적으로 PowerGUI IDE와 같이 수동으로로드 한 모듈을 기억하는 IDE를 사용하지 않는 한 시작 (즉, 프로파일) *에 있어야합니다. (그게 내가 사용하는 도구이고 intellisense 및 디버깅 기능을 위해이 도구를 강력하게 권장합니다.) –

+0

[PowerGUI] (http://powergui.org/index.jspa)를 사용해 주셔서 감사합니다. 내장 ISE를 사용하고있었습니다. –

5

당신은 할 수 :

Set-Alias Get-Filehash "E:\Tools\Power Shell Scripts\Get-FileHash.ps1" 
+1

별칭이 작동하지만'Get-Help Get-Filehash'를 실행하면'Get-Help 'E : \ Tools \ Power Shell Scripts \ Get-Filehash.ps1 " 도움을 받아서 올바르게 행동하게하려면 어떻게해야합니까? –

+0

나는 당신이 그 경우에 CmdLet으로 써야한다고 생각한다. 온라인에있는 많은 예제들이있다. –

+0

잠시 동안 검색했지만 cmdlet 예제에서 C# 코드를 수행하는 것을 보았지만 cmdlet 예제로 스크립트를 찾을 수 없습니다. –

4

스크립트가에있는 디렉토리를 넣어 귀하의 executable PATH (i.e. the PATH environment variable).

BTW, 함수 래퍼 해결 방법 당신이 인수를 전달하지 않기 때문에 작동하지 않습니다 스크립트 : (다른 답변에서 제안) 당신이 별칭을 만들 수

function Get-FileHash {. 'E:\Tools\Power Shell Scripts\Get-FileHash.ps1' $args} 

또는

관련 문제