In this new post, I will give you a script to copy folders excluding files in PowerShell. First, I want to explain the scenario I’m facing.
Scenario
So, I have some Microsoft Windows Servers on premise and on IIS I have configured applications for developer and production environments. Because the servers are in the company environment and they are not exposed to the internet, I can’t use CD/CI with Azure DevOps, for example. I have to do the deployment manually.
So, in the file system, I have one folder for each project and that contains:
- one folder for the developer environment
- another one for QA and Testers
- another one for production

When the application in the development environment is ready, I want to copy all the files from the developer
folder to the tester
folder but I want to exclude some files or directory such as:
appsettings
for each environmentweb.config
- the folder for imports under
wwwroot\Uploads\Imports
In each folder, I want to have the specific appsettings.json
and web.config
for the environment and I don’t want to change.
Then, because copying files and folders manually can cause issues, I’m looking for a script in PowerShell for that.
The script
$binSolutionFolder = 'C:\Projects\Portal\Dev\'
$deployFolderDir = 'C:\Projects\Portal\Test\'
$excludeFiles = @('appsettings.json', 'appsettings.Development.json', 'appsettings.Release.json', 'web.config')
$excludeFolders = @('wwwroot\\Uploads\\Imports')
$excludeFoldersRegex = $excludeFolders -join '|'
Get-ChildItem -Path $binSolutionFolder -Recurse -Exclude $excludeFiles |
where { $_.FullName.Replace($binSolutionFolder, "") -notmatch $excludeFoldersRegex } |
Copy-Item -Destination {
if ($_.PSIsContainer) {
Join-Path $deployFolderDir $_.Parent.FullName.Substring($binSolutionFolder.length -1)
}
else {
Join-Path $deployFolderDir $_.FullName.Substring($binSolutionFolder.length -1)
}
} -Force
Conclusion
So, this is the end of how to copy folders excluding files in PowerShell that you can use it for deployment, for example.
You must log in to post a comment.