A PowerShell module for copying files with advanced progress reporting using CopyFileEx from Win32Api.
Features include detailed progress bars, speed reporting.
It supports copying files using both managed operations and the Windows API.
- Windows API support through CopyFileEx
- Managed file copy fallback when API is unavailable
- Detailed progress reporting with:
- Current speed
- Total progress
- File-by-file progress
- Total size of copied data
- Support for single files and directories
- Recursive copy support
- Force parameter for overwrite control
- Special character handling with LiteralPath
- PassThru parameter for returning copied file objects
- Pipeline support for copying multiple files
- Install the module
Install-Module -Name PSCopyFileEx
- Import the module:
Import-Module PSCopyFileEx
Copy-FileEx -Path "C:\source\file.txt" -Destination "D:\backup"
Copy-FileEx -Path "C:\source\file.txt" -Destination "D:\backup" -Force
Copy-FileEx -Path "C:\source\folder" -Destination "D:\backup" -Recurse
Copy-FileEx -Path "C:\source\file.txt" -Destination "D:\backup" -Verbose
Copy-FileEx -LiteralPath "C:\source\file[1].txt" -Destination "D:\backup"
Copy-FileEx -Path "C:\source\*.txt" -Destination "D:\backup"
Copy-FileEx -Path "C:\source\file.txt" -Destination "D:\backup" -UseWinApi $false
Get-ChildItem "C:\source" -Filter "*.txt" | Copy-FileEx -Destination "D:\backup"
Copy-FileEx -Path "C:\source\" -Destination "D:\backup" -Include "*.txt" -Recurse
Copy-FileEx -Path "C:\source\" -Destination "D:\backup" -Exclude ".git" -Recurse -Force
Path
: Path to source file(s) or directory (supports wildcards)LiteralPath
: Path to source file(s) or directory (no wildcard interpretation)Destination
: Destination path for copied filesInclude
: Optional include filterExclude
: Optional exclude filterRecurse
: Copy directories recursivelyForce
: Overwrite existing filesPassThru
: Return copied file objectsUseWinApi
: Use Windows API for copying (default: $true)
- The module will automatically fall back to managed copy if Win32API is unavailable
- Progress reporting works in both API and managed copy modes
- Directory structure is preserved in recursive copies
- Files are not overwritten unless -Force is specified
For more detailed help and examples, run:
Get-Help Copy-FileEx -Full