Last Update: Oct 16, 2023 | Published: Jun 22, 2022
When you need to create files and folders on a Windows PC, using the GUI seems the most intuitive way to do it. However, PowerShell can intelligently create multiple files and folders in bulk. This is a pretty common task for almost any IT professional, and in this guide, we’ll show you how to create your files and folders using the New-Item PowerShell cmdlet.
Once you understand how to use PowerShell, the speed at which you can create things makes mundane tasks much easier. Let’s dive in and look at how to create files and folders using the New-item, Add-Content, and Test-Path cmdlets.
Creating a new file with PowerShell can be done with the New-Item cmdlet. If I wanted to create a new text file named MyTextFile.txt, the syntax would be the following:
New-Item MyTextFile.txt
In the example above, PowerShell created a file in the c: directory. However, I can specify different a location simply by adding the path to the filename. Here’s an example below:
New-Item c:\tools\MyNewFile.txt
Notice that in the screen capture above, I was in the temp directory, but I created the file in the tools directory. Once you are familiar with creating a new file, it is only one more line of code to add to start creating files in bulk.
Here’s an example of how to use a simple ForEach loop to create 10 files, all with a similar file name.
(1..10) | ForEach-Object {New-item “MyNewFile$_.txt”}
If necessary, you can also use the Get-ChildItem cmdlet to list all the files in that directory.
You can also use PowerShell to test if files already exist before you attempt to create them. There are several ways to test if files already exist with PowerShell, but the easiest one is to use the Test-Path cmdlet.
As the name implies, the Test-Path cmdlet can check if a path exists. You can check for files and/or folder paths. The cmdlet returns True if a file or folder exists, and False if it does not.
In the example below, I am checking to see if the file named MyTextFile.txt exists. Since the file exists, the Test-Path cmdlet returned True:
Test-Path MyTextFile.txt
Once you learn the logic for testing if a file exists, you can use the Test-Path command with an If statement to create a file when Test-Path returns false. I’ll show you how to do that in the example below:
$Filename = "MyTextFile.txt" if (-not(test-path $Filename)){new-item $FileName}
Let’s walk through the output together so we know exactly what happened: In example 1, I ran my code and nothing happened; notice there is no output. That’s because in my c: directory, a filename MyTextFile.txt already exists. Since it exists, the if statement did not execute the code.
In example 2, however, you can notice that I changed the directory from the temp directory to the tools directory. Since there’s no file named MyTextFile.txt in the latter, when I execute the code a second time, the if statement executes the New-Item cmdlet and creates a new file.
We’ve already looked at how to create new files with PowerShell. However, if you look at the previous screen captures, notice that the file size of all new files is 0 bytes. That’s because the New-Item cmdlet actually creates empty files.
If you want to add data to an existing file, you can use the Add-Content cmdlet. The syntax is easy to grasp, just like for the New-item command. Here’s an example below:
Add-Content mytextfile.txt -Value "Here's some sample text written via PowerShell"
Next, I can check my file using the Get-Content cmdlet.
get-content .\mytextfile.txt
I can also open the file in PowerShell using the Invoke-Item cmdlet.
Invoke-Item .\mytextfile.txt
If PowerShell can be used to create new files, we can also use it to replace existing files in a folder. PowerShell will warn you if you try to create a file while one already exists with the same name.
You can see in the example below the error message PowerShell displays when I attempt to create a file named MyNewFile3.txt.
New-item .\MyNewFile3.txt
However, if I wish to replace that file, I can do that by adding the -force parameter, which will overwrite any existing file with the same name.
new-item .\MyNewFile3.txt -Force
We just went through the different ways to create files in PowerShell. Now, let’s see how to create folders with the New-item and md commands.
Creating folders with PowerShell is also an easy task with the same New-Item cmdlet we used previously to create files. All we need is to specify the -ItemType parameter.
The -ItemType parameter controls whether the New-Item cmdlet creates a file, directory (folder), symbolic link, junction point, or a hard link. You can find out more about these options on the Microsoft Docs page for New-Item.
Creating a new folder with PowerShell is similar to creating a new file. Here’s an example with the command below:
new-item TestFolder1 -ItemType Directory
PowerShell is now a cross-platform language, which means it can be run on Windows, macOS, or Linux. The process of creating files and folders in Windows, Linux, and macOS from the command line is similar.
However, each OS has its own commands with different names for doing the same tasks. For example, to create a new folder called NewDirectory, each OS has a similar syntax with different cmdlets names: In DOS, the syntax is ‘MD NewDirectory’, but in Linux, it’s ‘MKDIR NewDirectory’.
Microsoft has taken many of the popular cmdlets names from other languages and included them in PowerShell. Commands such MKDIR or MD don’t actually exist in PowerShell: Instead, they’re aliases to their PowerShell brethren that do the same thing.
In PowerShell, MD is an alias to MKDIR. Also, MKDIR is an alias to the New-Item cmdlet. So that means if you type MD, MKDIR, or New-Item in PowerShell, all those commands have the same effect: running the New-Item cmdlet.
Here’s a quick example to highlight that functionality.
md Demofile1.txt
mkdir demofile2.txt
new-item demofile 3.txt
In the examples above, you can see that I created three files using the various aliases and cmdlet names for New-Item. The aliases all work exactly the same as typing New-Item.
PowerShell allows for many ways to create files and folders. The New-Item cmdlet makes it incredibly easy to create files and folders.
Microsoft has included aliases that refer to commands from popular operating systems like DOS and Linux in PowerShell to help admins feel right at home. We can also use loops to create files and folders at scale and logic statements like If to ensure that we only create files that don’t already exist.
We can also make sure that files that already exist don’t get overwritten by code unless we want them to be replaced. All these options allow us to build scripts to automate the mundane process of managing files and folders.
PowerShell is a very versatile tool, and now that you’ve learned how to create files and folders with it, you can check out our previous guide about using PowerShell to delete files and folders.