336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

스크립트 모듈의 확장자 : .psm1


스크립트 모듈을 사용하면 특정 경로에서 스크립트 파일을 실행하고 함수를 다시 호출하는 과정을 거치지 않아도 된다. 기본 파워셸 명령을 사용할 때처럼 단순히 이름과 필요한 매개변수를 입력하여 사용하면 된다.


작성한 모듈을 올바른 위치에 정확한 파일 확장자로 저장했다면, 파워셸을 시작할 때마다 자동으로 모듈을 찾아 로드하기 때문에작성한 함수를 해당 셸 내에서 편리하게 사용할 수 있다.


스크립트 모듈을 저장하는 위치를 확인할 때 살펴볼 환경 변수가 PSModulePath 이다.



PS /> Get-Content Env:/PSModulePath                                                                                                        
/Users/{User-Name}/.local/share/powershell/Modules:/usr/local/share/powershell/Modules:/usr/local/microsoft/powershell/6.0.2/Modules

아래 경로에 모듈이 저장된다.
마이크로소프트에서 예약한 위치, 로그인한 사용자의 프로필 위치 시스템 전역 위치에 해당한다.
  • /Users/{User-Name}/.local/share/powershell/Modules
  • /usr/local/share/powershell/Modules
  • /usr/local/microsoft/powershell/6.0.2/Modules


스크립트 모듈을 만드는 방법

PSMail.psm1



function Send-OutlookMail{
    [CmdletBinding()]
    Param(
	    [Parameter(Mandatory=$False)]
        [string] $From = "김도균 ",
	    [Parameter(Mandatory=$True)]
        [string] $To,
        [Parameter(Mandatory=$False)]
        [string] $Cc = "steelflea@outlook.com",
        [Parameter(Mandatory=$True)]
        [string] $Subject,
        [Parameter(Mandatory=$False)]
        [string] $Body = "PowerShell에서 보낸 메일"
    )
    BEGIN 
    {
        $Cred = (Get-Credential)
        $SmtpSvr=“smtp.live.com”
        $SmtpPort="587"     
    }
    PROCESS
    {
        Send-MailMessage -From $From -To $To -Cc $Cc -Subject $Subject `
        -Body $Body -SmtpServer $SmtpSvr  -Port $SmtpPort -UseSsl `
        -Credential $Cred -Encoding UTF8
    }
    END
    {
        Clear-Variable -Name Cred
    }
}



위 모듈을 PSMail 이라는 폴더를 만들어 저정한다.

PS /usr/local/share/powershell/Modules/PSMail> ls -al                                                                                      
total 8
drwxr-xr-x  3 hongkun  admin  96  6 29 23:10 .
drwxr-xr-x  3 hongkun  admin  96  6 29 23:09 ..
-rw-r--r--@ 1 hongkun  admin  76  6 29 23:10 PSMail.psm1
PS /usr/local/share/powershell/Modules/PSMail> Send-                                                                                       
Send-MailMessage  Send-OutlookMail                                                                                                         
PS /usr/local/share/powershell/Modules/PSMail> Get-Module -ListAvailable                                                                   


    Directory: /usr/local/share/powershell/Modules


ModuleType Version    Name                                ExportedCommands                                                                
---------- -------    ----                                ----------------                                                                
Script     0.0        PSMail                              Send-OutlookMail                                                                


    Directory: /usr/local/microsoft/powershell/6.0.2/Modules


ModuleType Version    Name                                ExportedCommands                                                                
---------- -------    ----                                ----------------                                                                
Manifest   1.1.0.0    Microsoft.PowerShell.Archive        {Compress-Archive, Expand-Archive}                                              
Manifest   3.0.0.0    Microsoft.PowerShell.Host           {Start-Transcript, Stop-Transcript}                                             
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Content, Clear-Content, Clear-ItemProperty, Join-Path...}                  
Manifest   3.0.0.0    Microsoft.PowerShell.Security       {Get-Credential, Get-ExecutionPolicy, Set-ExecutionPolicy, ConvertFrom-Secure...
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Format-List, Format-Custom, Format-Table, Format-Wide...}                      
Script     1.1.7.0    PackageManagement                   {Find-Package, Get-Package, Get-PackageProvider, Get-PackageSource...}          
Script     1.6.0      PowerShellGet                       {Install-Module, Find-Module, Save-Module, Update-Module...}                    
Script     0.0        PSDesiredStateConfiguration         {ValidateNodeManager, Get-PublicKeyFromFile, Set-PSDefaultConfigurationDocume...
Script     1.2        PSReadLine                          {Get-PSReadlineKeyHandler, Set-PSReadlineKeyHandler, Remove-PSReadlineKeyHand...


Send- 까지만 입력하고 tab을 누르면 추가한 모듈을 확인 할 수 있다. 


블로그 이미지

뚱땡이 우주인

,