Recently, I was required to create files with content programmatically. PowerShell is one of the best options for this kind of task. In this tutorial, I will show you different methods to create files with content using PowerShell with examples.
I will also show you how to create files with multiline content using PowerShell.
Create Files with Content Using PowerShell
Now, let me show you different methods to create files with content using PowerShell.
Method 1: Using the New-Item Cmdlet
The simplest way to create a new file through Windows PowerShell is by using the New-Item cmdlet. This cmdlet allows you to create various types of items, including files and directories.
Here’s an example of creating a blank text file:
New-Item -Path "C:\Backups\MyFile.txt" -ItemType FileIn this example, we specify the path where we want to create the file and the item type as “File”. If the file already exists, PowerShell will throw an error. To overwrite an existing file, add the -Force parameter.
But this cmdlet will create a blank file. If you want to add content to it, then you can write the below command.
New-Item -Path "C:\Backups\MyFile.txt" -ItemType File -Value "This is the content of the file."I executed the above script using VS code, and you can see the exact output in the screenshot below:

Read Get All Files in a Directory Using PowerShell
Method 2: Using the Out-File Cmdlet
While the New-Item cmdlet creates an empty file, the Out-File cmdlet allows you to create a file with content in one step.
Here’s an example:
"Hello, World!" | Out-File -FilePath "C:\Backups\Greeting.txt"In this case, we pipe a string (“Hello, World!”) to the Out-File cmdlet, which creates a new file at the specified path and writes the content to it.
Here is the exact output in the screenshot below:

Check out Create a File in the Current Directory Using PowerShell
Method 3: Using the Set-Content Cmdlet
Another way to create a file with content is by using the Set-Content cmdlet in PowerShell. This cmdlet is similar to Out-File, but it has some additional features.
Here’s an example:
Set-Content -Path "C:\Backups\Info.txt" -Value "Name: John Doe`nAge: 35`nCity: New York"In this example, we use the Set-Content cmdlet to create a file called “Info.txt” with multiple lines of content. The Value parameter accepts an array of strings, so we can use the backtick-n (`n) to insert line breaks.
Check out Remove the Last Line from a File Using PowerShell
Create Files with Special Formats
PowerShell also allows you to create files with special formats, such as CSV and XML.
To create a CSV file:
@"
Name,Age,City
John Doe,35,New York
Jane Smith,28,Los Angeles
"@ | Out-File -FilePath "C:\Backups\People.csv"To create an XML file:
@"
<?xml version="1.0" encoding="UTF-8"?>
<People>
<Person>
<Name>John Doe</Name>
<Age>35</Age>
<City>New York</City>
</Person>
<Person>
<Name>Jane Smith</Name>
<Age>28</Age>
<City>Los Angeles</City>
</Person>
</People>
"@ | Out-File -FilePath "C:\Backups\People.xml"Append Content to Existing Files in PowerShell
Sometimes, instead of creating a new file, you may want to append content to an existing file. PowerShell provides the Add-Content cmdlet for this purpose.
Here’s an example:
Add-Content -Path "C:\Backups\Logs.txt" -Value "New log entry: $(Get-Date)"This command appends a new line to the “Logs.txt” file with the current date and time.
Check out Read a Text File in PowerShell and Skip the First Line
Create PowerShell Scripts for Creating Files with Content
So far, we’ve focused on creating files from the PowerShell console. But what if you want to create a PowerShell script file from within another PowerShell script?
You can achieve this by using the same cmdlets we’ve discussed. Here’s an example:
$scriptContent = @"
Write-Host "Hello, World!"
"@
Set-Content -Path "C:\Backups\MyScript.ps1" -Value $scriptContentIn this example, we store the content of the script in a variable ($scriptContent) and then use the Set-Content cmdlet to create a new PowerShell script file with that content.
Best Practices and Tips
When creating files with PowerShell, keep these best practices and tips in mind:
- Use meaningful names: Choose descriptive names for your files to make their purpose clear.
- Handle errors gracefully: Use try-catch blocks to handle potential errors, such as permissions issues or invalid paths.
- Validate user input: If your script accepts user input for file paths or content, validate the input to ensure it’s safe and correct.
- Use parameters: Consider using parameters in your scripts to make them more reusable and flexible.
- Test your scripts: Always test your scripts thoroughly before running them in a production environment.
Check out Create a File with Date in the Name Using PowerShell
Create Files with Multiline Content Using PowerShell
Now, let me show you how to create files with multiline content using PowerShell.
Method 1: Using a Here-String
One of the easiest ways to create a file with multiline content in PowerShell is by using a here-string. A here-string allows you to define a multiline string directly in your script.
Here’s an example:
$content = @"
Line 1
Line 2
Line 3
"@
Set-Content -Path "C:\Backups\MyFile.txt" -Value $contentIn this example, we define a multiline string using the @"..."@ syntax and store it in the $content variable. Then, we use the Set-Content cmdlet to create a file named “MyFile.txt” with the content of the here-string.
Method 2: Using an Array of Strings
Another approach to creating a file with multiline content is by using an array of strings. Each element in the array represents a line in the file.
Here’s an example:
$lines = @(
"Line 1",
"Line 2",
"Line 3"
)
Set-Content -Path "C:\Backups\MyFile.txt" -Value $linesIn this case, we create an array called $lines with three elements, each representing a line of content. We then use the Set-Content cmdlet to write the array to the file.
Read Remove the Last Empty Line from a File Using PowerShell
Method 3: Using the Add-Content Cmdlet
If you want to append multiline content to an existing file, you can use the Add-Content cmdlet. This cmdlet allows you to add content to a file without overwriting its existing content.
Here’s an example:
$content = @"
Additional Line 1
Additional Line 2
"@
Add-Content -Path "C:\Backups\MyFile.txt" -Value $contentIn this example, we define a multiline string using a here-string and store it in the $content variable. We then use the Add-Content cmdlet to append the content to the existing file.
Create Files with Multiline Content with Special Formats
PowerShell also allows you to create files with special formats, such as HTML or XML, using multiline content.
Here’s an example of creating an HTML file:
$htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<title>My Web Page</title>
</head>
<body>
<h1>Welcome to My Web Page</h1>
<p>This is a sample HTML file created using PowerShell.</p>
</body>
</html>
"@
Set-Content -Path "C:\Backups\MyPage.html" -Value $htmlContentIn this example, we define the HTML content using a here-string and store it in the $htmlContent variable. We then use the Set-Content cmdlet to create an HTML file with the specified content.
Check out Create XML Files with Content Using PowerShell
Handle Special Characters and Formatting
You may need to include special characters or formatting when creating files with multiline content. PowerShell provides escape characters and formatting options to handle these scenarios. For example:
- To include quotes within a here-string, use double quotes (
") to define the string. - To include a literal backtick (“`) character, escape it with another backtick (““).
- To include line breaks, you can use the backtick followed by the letter “n” (
`n).
Here’s an example that demonstrates these concepts:
$content = @"
Name: John Doe
Age: 35
City: New York
"@
Set-Content -Path "C:\Backups\Info.txt" -Value $contentIn this example, the here-string includes line breaks using the `n escape sequence to create a formatted text file.
Conclusion
In this tutorial, I explained how to create files with content using PowerShell using various methods, such as:
- Method 1: Using the New-Item Cmdlet
- Method 2: Using the Out-File Cmdlet
- Method 3: Using the Set-Content Cmdlet
I have also explained how to create files with multiline content using PowerShell with various methods.
- Method 1: Using a Here-String
- Method 2: Using an Array of Strings
- Method 3: Using the Add-Content Cmdlet
You may also like:
Bijay Kumar is an esteemed author and the mind behind PowerShellFAQs.com, where he shares his extensive knowledge and expertise in PowerShell, with a particular focus on SharePoint projects. Recognized for his contributions to the tech community, Bijay has been honored with the prestigious Microsoft MVP award. With over 15 years of experience in the software industry, he has a rich professional background, having worked with industry giants such as HP and TCS. His insights and guidance have made him a respected figure in the world of software development and administration. Read more.