수색…


소개

PowerShell 모듈 은 시스템 관리자, DBA 및 개발자에게 확장 성을 제공합니다. 단순히 기능과 스크립트를 공유하는 방법인지 여부.

Powershell 함수 는 repitetive 코드를 피하는 것입니다. [PS 함수] 참조 [1] [1] : PowerShell 함수

PowerShell 스크립트 는 관리 작업을 자동화하는 데 사용됩니다. 관리 작업은 명령 줄 셸 및 .NET Framework 위에 구축 된 관련 cmdlet으로 구성됩니다.

기능

함수는 사용하기 쉬운 재사용 가능한 코드를 정의하는 데 사용되는 명명 된 코드 블록입니다. 일반적으로 스크립트 내에 포함되어 코드 재사용 (중복 코드 방지) 또는 모듈의 일부로 배포되어 여러 스크립트의 다른 사용자에게 유용합니다.

함수가 유용 할 수있는 시나리오 :

  • 숫자 그룹의 평균 계산
  • 실행중인 프로세스에 대한 보고서 생성
  • 컴퓨터를 핑 (ping)하고 c$ -share에 액세스하여 컴퓨터가 "정상"인지 테스트하는 함수를 작성하십시오

함수는 function 키워드를 사용하여 만들어지며 그 뒤에는 단일 단어 이름과 함수 이름이 호출 될 때 실행될 코드가 들어있는 스크립트 블록이옵니다.

function NameOfFunction {
    Your code
}

데모

function HelloWorld {
    Write-Host "Greetings from PowerShell!"
}

용법:

> HelloWorld
Greetings from PowerShell!

스크립트

스크립트는 스크립트가 호출 될 때 실행될 PowerShell 명령을 포함하는 파일 확장명이 .ps1 텍스트 파일입니다. 스크립트는 저장된 파일이므로 컴퓨터간에 쉽게 전송할 수 있습니다.

스크립트는 종종 특정 문제를 해결하기 위해 작성됩니다 (예 :

  • 주간 유지 관리 작업 실행
  • 컴퓨터에 솔루션 / 응용 프로그램을 설치 및 구성하려면

데모

MyFirstScript.ps1 :

Write-Host "Hello World!"
2+2

다음을 사용하여 파일 경로를 입력하여 스크립트를 실행할 수 있습니다.

  • 절대 경로, 예. c:\MyFirstScript.ps1
  • PowerShell 콘솔의 현재 디렉터리가 C:\ 경우 상대 경로 (예 : .\MyFirstScript.ps1

용법:

> .\MyFirstScript.ps1
Hello World!
4

스크립트는 모듈을 가져 와서 자신의 함수 등을 정의 할 수도 있습니다.

MySecondScript.ps1 :

function HelloWorld {
    Write-Host "Greetings from PowerShell!"
}

HelloWorld
Write-Host "Let's get started!"
2+2
HelloWorld

용법:

> .\MySecondScript.ps1
Greetings from PowerShell!
Let's get started!
4
Greetings from PowerShell!

기준 치수

모듈은 다른 PowerShell 사용자에게 쉽게 배포되고 여러 스크립트에서 또는 콘솔에서 직접 사용할 수있는 재사용 가능한 관련 함수 (또는 cmdlet)의 모음입니다. 모듈은 보통 자신의 디렉토리에 저장되며 다음과 같이 구성됩니다.

  • cmdlet이 포함 된 함수 나 이진 어셈블리 ( .dll )가 포함 된 .psm1 파일 확장명을 가진 하나 이상의 코드 파일
  • 모듈 이름, 버전, 작성자, 설명, 제공되는 함수 / cmdlet 등을 설명하는 모듈 목록 .psd1
  • 그것을 포함하기위한 기타 요구 사항. 의존성, 스크립트 등

모듈의 예 :

  • 데이터 집합에 대한 통계를 수행하는 함수 / cmdlet을 포함하는 모듈
  • 데이터베이스 쿼리 및 구성을위한 모듈

PowerShell이 ​​모듈을 찾고 가져 오기 쉽게하기 위해 종종 $env:PSModulePath 정의 된 알려진 PowerShell 모듈 위치 중 하나에 배치됩니다.

데모

알려진 모듈 위치 중 하나에 설치된 모듈을 나열하십시오.

Get-Module -ListAvailable

모듈 가져 오기, 예 : Hyper-V 모듈 :

Import-Module Hyper-V

모듈에서 사용 가능한 명령을 나열합니다 (예 : Microsoft.PowerShell.Archive - 모듈

> Import-Module Microsoft.PowerShell.Archive
> Get-Command -Module Microsoft.PowerShell.Archive

CommandType Name             Version Source                      
----------- ----             ------- ------                      
Function    Compress-Archive 1.0.1.0 Microsoft.PowerShell.Archive
Function    Expand-Archive   1.0.1.0 Microsoft.PowerShell.Archive

고급 기능

고급 기능은 cmdlet과 동일한 방식으로 작동합니다. PowerShell ISE에는 두 가지 고급 기능의 기본 요소가 포함되어 있습니다. 메뉴, 편집, 코드 스 니펫 또는 Ctrl + J를 사용하여 액세스하십시오. (PS 3.0 이후 버전은 다를 수 있음)

고급 기능이 포함하는 주요 기능은 다음과 같습니다.

  • Get-Help 를 통해 액세스 할 수있는 내장 된 맞춤 도움말 기능
  • 함수를 cmdlet처럼 작동하게하는 [CmdletBinding ()]을 사용할 수 있습니다.
  • 광범위한 매개 변수 옵션

단순 버전 :

<#
.Synopsis
   Short description
.DESCRIPTION
   Long description
.EXAMPLE
   Example of how to use this cmdlet
.EXAMPLE
   Another example of how to use this cmdlet
#>
function Verb-Noun
{
    [CmdletBinding()]
    [OutputType([int])]
    Param
    (
        # Param1 help description
        [Parameter(Mandatory=$true,
                   ValueFromPipelineByPropertyName=$true,
                   Position=0)]
        $Param1,

        # Param2 help description
        [int]
        $Param2
    )

    Begin
    {
    }
    Process
    {
    }
    End
    {
    }
}

전체 버전 :

<#
.Synopsis
   Short description
.DESCRIPTION
   Long description
.EXAMPLE
   Example of how to use this cmdlet
.EXAMPLE
   Another example of how to use this cmdlet
.INPUTS
   Inputs to this cmdlet (if any)
.OUTPUTS
   Output from this cmdlet (if any)
.NOTES
   General notes
.COMPONENT
   The component this cmdlet belongs to
.ROLE
   The role this cmdlet belongs to
.FUNCTIONALITY
   The functionality that best describes this cmdlet
#>
function Verb-Noun
{
    [CmdletBinding(DefaultParameterSetName='Parameter Set 1', 
                  SupportsShouldProcess=$true, 
                  PositionalBinding=$false,
                  HelpUri = 'http://www.microsoft.com/',
                  ConfirmImpact='Medium')]
    [OutputType([String])]
    Param
    (
        # Param1 help description
        [Parameter(Mandatory=$true, 
                   ValueFromPipeline=$true,
                   ValueFromPipelineByPropertyName=$true, 
                   ValueFromRemainingArguments=$false, 
                   Position=0,
                   ParameterSetName='Parameter Set 1')]
        [ValidateNotNull()]
        [ValidateNotNullOrEmpty()]
        [ValidateCount(0,5)]
        [ValidateSet("sun", "moon", "earth")]
        [Alias("p1")] 
        $Param1,

        # Param2 help description
        [Parameter(ParameterSetName='Parameter Set 1')]
        [AllowNull()]
        [AllowEmptyCollection()]
        [AllowEmptyString()]
        [ValidateScript({$true})]
        [ValidateRange(0,5)]
        [int]
        $Param2,

        # Param3 help description
        [Parameter(ParameterSetName='Another Parameter Set')]
        [ValidatePattern("[a-z]*")]
        [ValidateLength(0,15)]
        [String]
        $Param3
    )

    Begin
    {
    }
    Process
    {
        if ($pscmdlet.ShouldProcess("Target", "Operation"))
        {
        }
    }
    End
    {
    }
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow