How to Create Directory If Not Exists in PowerShell

When working with folders in a PowerShell script, checking if a directory exists before performing any operations is expected. If the folder doesn’t exist, your script may encounter errors or exceptions when trying to access files, delete folders, create new files within those folders, or any other folder-related task.

 

PowerShell provides multiple ways to create a directory if it doesn’t already exist and check if a directory is present before executing folder-based operations. This preventive measure helps avoid potential exceptions in your script.

 

In this guide, I’ll walk you through creating a directory if it doesn’t exist, using examples in PowerShell.

 

Create Directory If Not Exists

 

1. Using the New-Item cmdlet

 

The New-Item cmdlet is a versatile command that can create various types of items, including directories. By using the -ItemType parameter with the value Directory, you can ensure that a new directory is created.

 

New-Item -Path "C:\Path\To\NewDirectory" -ItemType Directory -Force

 

The -Force parameter is optional and ensures that the command will create the directory even if the file path’s parent directory does not exist.

 

2. Using the mkdir function

 

PowerShell provides a built-in alias called mkdir (short for “make directory”) that creates a new directory. This function is a simplified version of the New-Item cmdlet with the -ItemType parameter set to Directory.

 

mkdir "C:\Path\To\NewDirectory"

 

3. Using the System.IO.Directory class

 

PowerShell allows you to leverage the .NET Framework classes, including the System.IO.Directory class, which provides methods for creating, moving, and enumerating directories and files.

 

$path = "C:\Path\To\NewDirectory"
if (!(Test-Path $path)) {
    [System.IO.Directory]::CreateDirectory($path)
}

 

  How to Pass Multiple Parameters to Function in PowerShell

In this example, the Test-Path cmdlet checks if the specified directory path exists. If it doesn’t, the CreateDirectory method of the System.IO.Directory class creates the new directory.

 

4. Using the System.IO.DirectoryInfo class

 

Another approach is to use the System.IO.DirectoryInfo class, which represents a directory on the file system.

 

$path = "C:\Path\To\NewDirectory"
$directoryInfo = [System.IO.DirectoryInfo]::new($path)
if (!$directoryInfo.Exists) {
    $directoryInfo.Create()
}

 

Here, we create a new DirectoryInfo object with the desired path. Then, we check if the directory exists using the Exists property. If it doesn’t, we call the Create method to create the new directory.

 

5. Using the Join-Path cmdlet

 

In some cases, you may want to create a directory within an existing directory. The Join-Path cmdlet can help construct the full path by combining multiple path segments.

 

$parentDirectory = "C:\Path\To"
$newDirectoryName = "NewDirectory"
$fullPath = Join-Path $parentDirectory $newDirectoryName
if (!(Test-Path $fullPath)) {
    New-Item -Path $fullPath -ItemType Directory
}

 

In this example, we first define the parent directory and the name of the new directory. Then, we use Join-Path to combine them into the full path. After that, we check if the full path exists and create the directory if it doesn’t.

 

All these methods can be used to create a directory if it doesn’t exist in PowerShell. The choice of method depends on your specific requirements, coding style preferences, and the context in which the code will be used. It’s worth noting that some methods, like using the System.IO.Directory or System.IO.DirectoryInfo classes, provide additional functionality and flexibility for working with directories and files.