기능은 일반적으로 발생에 PowerShell 과 진정으로 이해하는 PowerShell 언어,그것은 중요하는 방법을 알고 있다는 기능이 작동합니다. 이 문서에서,우리가하는 방법을 보여줍 PowerShell 기능이 진화에서 기본적으로 아무것도 모든 방법을 사용하여 매개 변수를 검증하세요. 이것을 설명하기 위해 먼저 더 간단해질 수없는 함수부터 시작하겠습니다.
function Write-Log {
param()
}
실행할 때의 내부 PowerShell 세션에 이 기능이 실행됩니다 하지만 아무것도하지 않는 것이 없기 때문에 코드를 실행할 수 있습니다. PowerShell 은 단순히 함수 자체를 실행하고 반환합니다.함수가 실제로 무언가를 수행하려면 몇 가지 코드를 추가해야합니다. Param 블록과 마지막 중괄호 사이에 코드가 추가됩니다. 아래에서 내 쓰기 로그 함수가 콘솔에”내가 한 일”문자열을 반환하도록하고 있음을 알 수 있습니다.
function Write-Log {
param()
'I did something'
}
PS> Write-Log
I did something
우리는 기능이라고 쓰기 로그 그래서 나는 가정이 될 것이 기능하는 것이 결국 작성 몇 가지 종류의 텍스트를 로그 파일이 있습니다. 매번 같은 것을 로그 파일에 쓰고 싶지 않기 때문에 함수가 실행될 때 메시지를 변경하는 방법을 제공해야합니다. 그렇게하기 위해 매개 변수를 추가 할 것입니다. 매개 변수를 사용하면 런타임에 다른 값을 함수에 전달할 수 있습니다. 이렇게하면 함수가 런타임에 동적 입력을 수집 할 수 있습니다.매개 변수를 추가하려면 변수를 추가하겠습니다. 이 경우 변수를 메시지라고합니다. 아래 그림과 같이 param 블록 안에 추가하겠습니다. 그런 다음 함수 자체 내부에서 해당 매개 변수를 참조 할 수 있음을 알 수 있습니다. 실행할 때 함수는 메시지 매개 변수에 전달하는 값을 반환합니다.
function Write-Log {
param($Message)
$Message
}
PS> Write-Log -Message 'I did something'
I did something
단 하나의 매개 변수에서 멈추지 않아도됩니다. 우리는 여기에 우리가 원하는만큼 추가할 수 있습니다. 아래에서는 심각도 매개 변수를 추가하여 함수가 실행될 때 값을 제공하고 동일한 동작을 나타내는 것을 볼 수 있습니다.
function Write-Log {
param($Message, $Severity)
"$Message - Severity: $Severity"
}
Write-Log -Message 'I did something' -Severity 1
이제 우리는 우리를 처리하는 방법을 알고 매개변수,우리가 얻을 수 있으로 매개 변수는 유형입니다. 매개 변수는 PowerShell 의 다른 것과 마찬가지로 유형을 갖습니다. 위,그것은 유형을 사용하고 있었지만 상상할 수있는 모든 종류의 객체를 받아 들였습니다. 매개 변수가 명시 적으로 입력되지 않았습니다. 기대하는 값만 전달되도록 모든 매개 변수에서이 작업을 수행하는 것이 좋습니다.
유형을 정의하려면 매개 변수가 선언되기 바로 전에 유형을 대괄호로 추가 할 수 있습니다.
function Write-Log {
param($Message)
$Message
}
면 명시적인 유형에 할당된 매개변수,PowerShell 만 허용 입력의 해당 형식 또는 개체를 수 있는 것을 변환합니다. 아래 예제에서는 부울 값$false 를 메시지 매개 변수에 전달합니다. PowerShell 이 허용하지 않는다는 것을 알 수 있습니다. 부울 유형을 ServiceController 유형으로 변환 할 수 없기 때문입니다.
그러나 Get-Service 가 반환하는 ServiceController 객체를 전달하면 정상적으로 작동합니다.
PS> Write-Log -Message $service
Status Name DisplayName
------ ---- -----------
Stopped AdtAgent Microsoft Monitoring Agent Audit Fo...
매개 변수 속성을 사용할 수도 있습니다. 매개 변수 특성을 사용하면 작동 방식을 결정하는 각 매개 변수의 다른 특성을 정의 할 수 있습니다. 아래 예제에서는 필수 매개 변수를 사용하고 있습니다. 이러한 특성은 사용자가 메시지 매개 변수에 값을 전달하도록 강제 함수가 실행되지 않습니다.
또한 심각도 매개 변수에 기본값을 설정하고 있습니다. 이렇게하면 해당 매개 변수에 값을 전달하여 런타임에 재정의하지 않는 한 심각도를 항상 1 로 강제 할 수 있습니다.
function Write-Log {
param(
$Message,
$Severity = 1
)
"$Message - Severity: $Severity"
}
마지막으로 매개 변수 유효성 검사 속성을 사용할 수 있습니다. 매개 변수 유효성 검사 특성은 매개 변수에 전달되는 값을 제한하는 좋은 방법입니다. 아래 예제에서는 ValidateRange()유효성 검사 특성을 사용하고 있습니다. 이 특성은 허용 된 숫자의 범위를 정의하기 위해 정수 유형의 매개 변수에 사용됩니다. 이 예에서는 심각도의 값만 1-5 로 허용합니다. 해당 범위에없는 다른 값은 실패합니다.
function Write-Log {
param(
$Message,
$Severity
)
"$Message - Severity: $Severity"
}
포장
여 지금 당신은 당신이 있어야에 대한 기본적인 이해의 방법 기능을 작동에 있습니다. 우리는 PowerShell 에서 유용한 기능을 구축하기 시작하기 위해 알아야 할 모든 것을 다루었습니다. 나는 당신이 함수가 유용 할 스크립트에서 시간을 알아 채기 시작하고 그것들을 buiding 시작하는 것이 좋습니다. 시간이 지남에 따라 코드가 더 깨끗 해지고 읽기가 훨씬 쉬워 질 것임을 알 수 있습니다.