Powershell Create Directory If Not Exist: A Detailed Guide

by | PowerShell

Directories are central to nearly all computer systems, be it Windows, macOS, or Linux. In PowerShell, directories are a type of item or object that serve to organize files in your computer’s file system. Much like the physical folders in a filing cabinet, directories on a computer can contain files, other directories, and the subdirectories within them.

Creating a directory in PowerShell if it does not exist involves the use of two cmdlets: Test-Path and New-Item. First, Test-Path checks if the directory already exists at the specified path, returning a Boolean value (True if it exists, False if not). If the directory does not exist (False), New-Item is then used to create the directory. This approach prevents errors from trying to create a directory in a location where one already exists.

Powershell Create Directory If Not Exist

Throughout this article, we’ll showcase various examples and methods to utilize PowerShell for creating directories if they don’t exist. Learning these techniques will help you tackle common challenges faced in script development and enhance your overall PowerShell proficiency.

Let’s dive in!

The Role of Test-Path and New-Item

Before diving into the core functionalities, it’s important to know about the essential commands like Test-Path and New-Item that make this process possible.

  • Test-Path: The Test-Path command allows users to check whether a folder or file exists at a given path.
  • New-Item: The New-Item command facilitates the creation of files or directories. Combining New-Item with Test-Path assists in implementing a conditional operation that checks the existence of a folder and introduces a new directory when necessary.

Alright, with that out of the way, let’s really dive into how you can create directories in PowerShell!

How to Create Directories in PowerShell

To create folders or directory if it does not exist, you can use the New-Item cmdlet in PowerShell. This cmdlet is versatile and can be used to create various types of items, including files and directories.

When using this cmdlet, you need to specify the type of item you want to create, the path where you want to create it, and the folder name.

How to Create Directories with PowerShell

Below, we’ve listed the parameters of PowerShell with their descriptions to help you understand when to use what parameter.

1. Using -ItemType Parameter

The -ItemType parameter is used to define the type of item you want to create.

To create a directory, set the -ItemType to “Directory”.

For instance, the following PowerShell create folder Script will create a folder called “NewFolder” in the specified path:

New-Item -ItemType Directory -Path "C:\ParentFolder\NewFolder"

The output will be:

Using -ItemType Parameter when creating directory

The output confirms that the PowerShell folder created successfully in the specified folder path.

2. Using the -Force Parameter

When creating a directory, you can use the -Force parameter to ensure that the directory is created if it doesn’t already exist. The -Force parameter will also create intermediate directories if they do not exist.

The following PowerShell script is an example of using the -Force parameter:

New-Item -ItemType Directory -Force -Path "C:\ParentFolder\NewFolder"

The output of the above code will be:

Using The -Force Parameter when creating directory

3. Handling Errors With -ErrorAction

While creating directories with PowerShell, you may encounter errors if the specified path already exists or if you do not have the required permissions.

You can use the -ErrorAction parameter followed by the desired action to handle such errors.

There are several options for error actions, such as:

  • SilentlyContinue: Suppresses the error message and continues with execution.
  • Stop: Displays the error message and halts execution.
  • Inquire: Displays the error message and asks the user whether to continue or halt execution.
  • Ignore: Suppresses the error message but adds it to the $Error variable.

The following is an example:

New-Item -ItemType Directory -Force -Path "C:\ParentFolder\NewFolder" -ErrorAction SilentlyContinue

This script will suppress the error message and continue the execution if an error is encountered.

We have demonstrated how to create directories using PowerShell with the New-Item cmdlet, applying the -ItemType parameter, utilizing the -Force parameter, and managing errors with the -ErrorAction parameter.

By combining these features, you can efficiently create directories and handle various scenarios when working with paths and folders in PowerShell.

How to Check if a Directory Exists in PowerShell

PowerShell offers a very helpful command for verifying the existence of a folder: Test-Path.

The purpose of this command is to test whether a path exists or not. It returns a boolean value based on the existence of the folder (True if the directory exists, and False if it doesn’t).

The following is a simple example of usage:

$folderPath = "C:\Example\Folder"
if (Test-Path $folderPath) {
    Write-Host "Folder exists"
} else {
    Write-Host "Folder does not exist"
}

This code checks if a folder exists at the specified location using the “Test-_Path” command. If it exists, a message displays saying, “Folder exists”. Otherwise, it shows “Folder does not exist”.

Checking if a directory exists in PowerShell

Using Wildcard Characters With Test-Path

You can use wildcard characters with Test-Path to search for directories based on specified patterns.

The most common wildcard characters are the asterisk (*) and the question mark (?).

An asterisk matches multiple characters, while a question mark matches a single character.

For instance, let’s say you want to check if there’s a folder with a name starting with “Project” in a specific location:

$location = "D:\TopDirec\SubDirec\*"
$pattern = "Project*"

$directories = Get-ChildItem -Path $location -Directory
$exists = $directories.Name -like $pattern

if ($exists) {
    Write-Host "A folder with the pattern exists"
} else {
    Write-Host "No folder found with the pattern"
}

This code uses “Get-ChildItem” to get all the directories within a location. Then, the script checks if any of the directory names match the given pattern using the “-like” operator. If a match is found, a message displays that a folder with the pattern exists. Otherwise, it shows that no folder was found with the specified pattern.

Using Wildcard Characters with Test-Path

Conditional Directory Creation in PowerShell

We previously looked at how you can create directories in PowerShell. We also looked at the method for checking if a directory exists.

Conditional Directory Creation

In this section, we’ll look at how you can use both these concepts together to create a directory if it does not exist.

1. Using “if” Statements

In PowerShell, creating a directory if it does not exist can be achieved using if statements with the Test-Path and New-Item cmdlets.

First, you can use Test-Path to check if the directory exists and then create the directory using New-Item if it does not.

Assume you have a variable $folderPath containing the path to the folder you want to create:

$folderPath = "C:\Path\To\Folder"
if (!(Test-Path $folderPath -PathType Container)) {
    New-Item -ItemType Directory -Force -Path $folderPath
}

In this example, the Test-Path cmdlet checks if the folder exists and returns a boolean value.

If the folder does not exist, the New-Item cmdlet is executed to create the folder if not exists.

2. Folder Already Exists Flag

It might be useful to have a flag in your script to indicate whether the folder exists or not.

You can create a variable like $folderExists, and assign the result of the Test-Path cmdlet to it.

For instance:

$folderExists = Test-Path $folderPath -PathType Container

Now $folderExists will be True if the folder exists and False otherwise.

If you need to perform additional actions depending on the folder existence, you can make use of the flag in conditional statements:

if ($folderExists) {
    # Perform some action when the folder already exists
} else {
    # Perform some action when the folder is newly created
}

This approach allows you to handle different situations in your script based on the folder’s state (already existing or newly created). You should always double-check the existence of a folder before performing any operation that relies on its presence to avoid potential errors.

Advanced Techniques for Creating Directories in PowerShell

In the above sections, we covered a basic introduction to creating directory if it does not exist in PowerShell. Now, we will go over some advanced techniques that allows for more customization when creating directories.

Advanced Techniques for Creating Directories

1. Creating Multiple Folders Simultaneously

In PowerShell, you can create multiple folders at once using a single-line script.

To do this, you can use the ForEach-Object cmdlet to iterate through an array of folder names and create them using the New-Item cmdlet inside a pipeline.

For instance:

$arrayOfFolders = @("Folder1", "Folder2", "Folder3")
$arrayOfFolders | ForEach-Object { New-Item -Path $_ -ItemType Directory }

This script will create the folders specified in the $arrayOfFolders variable if they do not already exist.

The output will be:

Creating Multiple Folders Simultaneously

2. Using Functions and Parameters for Creating Directories

You can create a custom function in PowerShell to simplify directory creation by passing parameters:

function Create-DirectoryIfNotExists($path) {
    if (!(Test-Path $path)) {
        New-Item -Path $path -ItemType Directory
    }
}

Using this function, you can create a new folder by passing the folder’s path as an argument:

Create-DirectoryIfNotExists "D:\NewFolder"

The output will be:

Using Functions and Parameters for Creating Directories

To learn more about PowerShell cmdlets, check the following PowerShell tutorials out:

Final Thoughts

As we conclude this article, it’s essential to understand the value of PowerShell’s ability to create a directory if it doesn’t exist. This skill is a building block in automation and scripting tasks. It enables you to manage files and directories effectively, reducing manual errors and saving time.

Learning how to use Test-Path and New-Item commands can be a game-changer. These commands give you the control and flexibility you need to handle file systems. With them, you can easily check for a directory’s existence and create it if needed, which is a common requirement in many automation scenarios.

Frequently Asked Questions

In this section, you’ll find some frequently asked questions that you may have when working with directories in PowerShell.

Frequently Asked Questions

How to create a directory if it doesn’t exist in PowerShell?

To create a directory if it doesn’t exist in PowerShell, first check its existence with the Test-Path cmdlet, and then create the directory with the New-Item cmdlet if the result is false:

$FolderToCreate = "C:\Path\To\Folder"
if (!(Test-Path $FolderToCreate -PathType Container)) {
    New-Item -ItemType Directory -Force -Path $FolderToCreate
}

What is the cmdlet to check for folder existence in PowerShell?

The cmdlet to check for folder existence in PowerShell is Test-Path. It returns a boolean value indicating whether the specified path exists or not. To check for a folder, include the -PathType Container parameter:

Test-Path -Path "C:\Path\To\Folder" -PathType Container

How to use Test-Path in PowerShell for directories?

Using Test-Path in PowerShell for directories is simple. Just provide the path to the directory as the -Path parameter and specify -PathType Container:

$FolderPath = "C:\Path\To\Folder"
$FolderExists = Test-Path -Path $FolderPath -PathType Container

$FolderExists will contain a boolean value (true or false) indicating the existence of the directory.

What is the syntax to create a directory recursively in PowerShell?

To create a directory recursively in PowerShell, use the New-Item cmdlet with the -Force parameter. This will create any missing parent directories if they don’t exist:

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

How to create a file if it does not exist in PowerShell?

To create a file if it does not exist in PowerShell, first check its existence with the Test-Path cmdlet, and then create the file with the New-Item cmdlet if the result is false:

$FileToCreate = "C:\Path\To\File.txt"
if (!(Test-Path $FileToCreate)) {
    New-Item -ItemType File -Force -Path $FileToCreate
}

What is the PowerShell cmdlet to create a new item?

The PowerShell cmdlet to create a new item is New-Item. It can be used to create files, directories, and other types of items. The following is an example of creating a directory:

New-Item -ItemType Directory -Path "C:\Path\To\Folder"
author avatar
Sam McKay, CFA
Sam is Enterprise DNA's CEO & Founder. He helps individuals and organizations develop data driven cultures and create enterprise value by delivering business intelligence training and education.

Related Posts