PowerShell을 사용하여 변수의 데이터 유형 테스트

Marion Paul Kenneth Mendoza 2022년8월18일
PowerShell을 사용하여 변수의 데이터 유형 테스트

우리가 일반적으로 사용하는 PowerShell의 한 가지 기술은 사용자 입력을 받아 변수에 저장하는 것입니다. 그러나 사용자로부터 받은 사용자 입력이 예상 데이터 유형과 다른 상황이 있습니다.

한 가지 예는 Int 또는 정수 데이터 유형인 나이 대신 String 데이터 유형으로 이름을 입력한 사용자입니다. 이 기사에서는 가변 데이터 유형 불일치를 처리하는 방법과 PowerShell을 사용하여 적절하게 수정하는 방법에 대해 설명합니다.

PowerShell을 사용하여 변수 테스트

가변 데이터 유형 불일치를 처리하는 세 가지 예를 보여 드리겠습니다. 매개변수 사용부터 시작하겠습니다.

매개변수를 사용하여 변수 테스트

사용자 입력을 요청하는 한 가지 방법은 스크립트 실행 중에 필수 매개변수를 미리 구성하는 것입니다. 매개변수를 미리 결정할 때 매개변수를 지원하는 데이터 유형을 추가할 수 있습니다.

이런 식으로 스크립트는 스크립트가 시작되기 전에 사용자가 유효한 변수를 전달하고 있는지 알 수 있습니다. 예제를 살펴보겠습니다.

스크립트를 실행하는 사용자의 나이가 필요하다고 가정해 보겠습니다. 아래 스크립트를 실행하여 스크립트가 정수 값만 허용하도록 할 수 있습니다.

예제 코드(param.ps1):

param(
    [Parameter(Mandatory)]
    [Int]$age
)
Write-Output $age

사용자가 .\param.ps1 -age 2를 사용하여 실행했다고 가정하면 스크립트는 숫자 출력과 함께 이를 반환해야 합니다.

입력:

Supply values for the following parameters:
age: 2

출력:

2

그러나 사용자가 정수 이외의 데이터 유형을 가진 다른 값(예: .\param.ps1 -age "hello")을 전달하려고 하면 스크립트에서 오류가 발생합니다.

입력:

Supply values for the following parameters:
age: hello

출력:

"System.Int32". Error: "Input string was not in a correct format."

아마도 스크립트 실행 중에 사용자 입력을 처리하고 있을 것입니다. 다음 메소드는 스크립트 실행이 진행되는 동안 변수의 데이터 유형을 확인합니다.

연산자로 변수 테스트

변수의 데이터 유형을 확인하는 또 다른 방법은 조건 연산자를 사용하는 것입니다. 조건 연산자는 부울 변수를 생성하는 둘 이상의 값을 함께 일치시키는 함수입니다.

이 기사에서는 조건 연산자 -is를 사용합니다. 이 상황에서 변수를 데이터 유형에 직접 일치시켜 -is 연산자를 사용할 수 있습니다.

예제 코드:

$age -is [Int]

출력:

True

예를 들어 아래 코드 스니펫을 사용하면 변수에 정수 값이 있는 경우 스크립트에서 True 값을 출력합니다. 그렇지 않으면 거짓. 이러한 출력은 부울 값을 내보내기 때문에 조건문을 사용하여 -as 연산자로 변수의 데이터 유형을 변환하는 것과 같은 특정 작업을 수행할 수 있습니다.

예제 코드:

if($age -is [Int]){
    Write-Output "Age $age is an integer"
}else{
    Write-Output "Age is not an integer... Converting"
    try{
        $age = $age -as [Int]
        Write-Output "Converted! Age $age is now an integer"
    }catch{
        Write-Output "Input is a string, could not be converted."
    }
}

출력:

Age is not an integer... Converting
Converted! Age 2 is now an integer

함수로 변수 테스트하기

마지막 예제는 연산자를 사용하여 사용자 정의 함수를 생성할 것이기 때문에 이전 예제와 유사합니다. 이 연산자를 사용하여 변수의 데이터 유형을 확인하고 부울 값을 반환하는 함수를 만들 수 있습니다.

아래 함수의 좋은 점은 이전 예제와 비교하여 이 함수가 음수 값도 확인하여 보다 정확한 결과를 제공한다는 것입니다.

예제 코드:

function isNumeric($_){
    return $_ -is [int]  -or $_ -is [int16]  -or $_ -is [int32]  -or $_ -is [int64]
}
isNumeric(-1)

출력:

True
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

관련 문장 - PowerShell Variable