How to Check if a Variable is Null or Empty in PowerShell?

    While working on a PowerShell script, I got a requirement to check if a PowerShell variable in null or empty. In this PowerShell tutorial, we’ll explore how to check if a variable is null or empty in PowerShell using various methods.

    To check if a variable in PowerShell is null or empty, you can use the -eq operator or the [string]::IsNullOrEmpty() method. For example, $variable -eq $null or [string]::IsNullOrEmpty($variable) will return True if the variable is null or an empty string, respectively. If you need to account for strings that contain only whitespace, use [string]::IsNullOrWhiteSpace($variable) instead.

    Understanding $null in PowerShell

    In PowerShell, $null represents an absence of a value or an undefined value. It’s important to understand that $null is not the same as an empty string or a space character; it’s a special variable that signifies ‘nothing’.

    Here’s an example of setting a variable to $null in PowerShell:

    $value = $null

    If you were to check the value of $value, it would return nothing because it’s $null.

    Check if a Variable is Null or Empty in PowerShell

    The simplest way to check if a variable in PowerShell is $null is by using the equality operator -eq. Here is a complete script.

    $value = $null
    if ($value -eq $null) {
        "The variable is null."
    } else {
        "The variable is not null."
    }

    This will output “The variable is null.” if $value is $null.

    I ran the PowerShell script using VS code and you can see the output in the screenshot below:

    Check if a Variable is Null or Empty in PowerShell

    Checking for Empty Strings in PowerShell

    In PowerShell, an empty string is different from $null. It’s a string with a length of zero, represented as "" or ''. To check for an empty string in PowerShell, you can use the -eq operator:

    $stringValue = ""
    if ($stringValue -eq "") {
        "The string is empty."
    } else {
        "The string is not empty."
    }

    This will output “The string is empty.” if $stringValue is an empty string.

    Using IsNullOrEmpty Method

    Another way to check for null or empty strings in PowerShell is by using the [string]::IsNullOrEmpty() method from the .NET framework:

    $stringValue = ""
    if ([string]::IsNullOrEmpty($stringValue)) {
        "The string is null or empty."
    } else {
        "The string is not null or empty."
    }

    This method returns true if the variable is either $null or an empty string in PowerShell.

    You can see the output in the screenshot below:

    powershell check if variable is null or empty

    Using IsNullOrWhiteSpace Method

    Sometimes a string may contain only whitespace characters, and you might want to treat it as empty. In this case, you can use the [string]::IsNullOrWhiteSpace() method to check for null or empty in PowerShell:

    $stringValue = "   "
    if ([string]::IsNullOrWhiteSpace($stringValue)) {
        "The string is null, empty, or whitespace."
    } else {
        "The string has characters other than whitespace."
    }

    This method checks for $null, empty, and whitespace-laden strings.

    Example

    Let’s say you have a script that processes user input. You want to ensure that the input is not $null or empty before proceeding. Here’s how you might write that:

    $userInput = Read-Host "Please enter your name"
    
    if ([string]::IsNullOrWhiteSpace($userInput)) {
        Write-Host "You did not enter a name!"
    } else {
        Write-Host "Hello, $userInput!"
    }

    This script prompts the user for their name and checks if the input is $null, empty, or just whitespace. It only greets the user if they’ve entered a valid name.

    Conclusion

    By using the -eq operator, the [string]::IsNullOrEmpty(), or the [string]::IsNullOrWhiteSpace() methods, you can easily check for $null, empty, or whitespace-only strings in your PowerShell scripts.

    In this PowerShell tutorial, I have explained different ways to check if a variable is null or empty in PowerShell.

    You may also like:

    >