使用 PowerShell 測試變數的資料型別

Marion Paul Kenneth Mendoza 2022年7月18日
使用 PowerShell 測試變數的資料型別

我們通常使用的 PowerShell 中的一種技術是獲取使用者輸入並將其儲存在變數中。但是,在某些情況下,從使用者那裡獲取的使用者輸入與我們預期的資料型別不同。

一個例子是一個使用者輸入了他的名字,一個 String 資料型別,而不是他的年齡,它是一個 Int 或整數資料型別。在本文中,我們將討論如何處理可變資料型別不匹配的幾種方法,以及如何使用 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