Files
winutil/functions/private/Copy-Files.ps1
T

54 lines
2.2 KiB
PowerShell
Raw Normal View History

+12
2023-11-28 16:11:11 -06:00
function Copy-Files {
<#
+12
2023-11-28 16:11:11 -06:00
.DESCRIPTION
2025-01-10 20:40:25 +01:00
Copies the contents of a given ISO file to a given destination
.PARAMETER Path
The source of the files to copy
.PARAMETER Destination
The destination to copy the files to
.PARAMETER Recurse
Determines whether or not to copy all files of the ISO file, including those in subdirectories
.PARAMETER Force
Determines whether or not to overwrite existing files
+12
2023-11-28 16:11:11 -06:00
.EXAMPLE
2025-01-10 20:40:25 +01:00
Copy-Files "D:" "C:\ISOFile" -Recurse -Force
#>
+12
2023-11-28 16:11:11 -06:00
param (
[string]$Path,
[string]$Destination,
[switch]$Recurse = $false,
[switch]$Force = $false
+12
2023-11-28 16:11:11 -06:00
)
try {
+12
2023-11-28 16:11:11 -06:00
$files = Get-ChildItem -Path $path -Recurse:$recurse
Write-Host "Copy $($files.Count) file(s) from $path to $destination"
+12
2023-11-28 16:11:11 -06:00
foreach ($file in $files) {
$status = "Copying file {0} of {1}: {2}" -f $counter, $files.Count, $file.Name
2025-01-10 20:40:25 +01:00
Write-Progress -Activity "Copy disc image files" -Status $status -PercentComplete ($counter++/$files.count*100)
+12
2023-11-28 16:11:11 -06:00
$restpath = $file.FullName -Replace $path, ''
if ($file.PSIsContainer -eq $true) {
+12
2023-11-28 16:11:11 -06:00
Write-Debug "Creating $($destination + $restpath)"
New-Item ($destination+$restpath) -Force:$force -Type Directory -ErrorAction SilentlyContinue
} else {
+12
2023-11-28 16:11:11 -06:00
Write-Debug "Copy from $($file.FullName) to $($destination+$restpath)"
Copy-Item $file.FullName ($destination+$restpath) -ErrorAction SilentlyContinue -Force:$force
+12
2023-11-28 16:11:11 -06:00
Set-ItemProperty -Path ($destination+$restpath) -Name IsReadOnly -Value $false
}
+12
2023-11-28 16:11:11 -06:00
}
2025-01-10 20:40:25 +01:00
Write-Progress -Activity "Copy disc image files" -Status "Ready" -Completed
} catch {
Write-Host "Unable to Copy all the files due to an unhandled exception" -ForegroundColor Yellow
Write-Host "Error information: $($_.Exception.Message)`n" -ForegroundColor Yellow
Write-Host "Additional information:" -ForegroundColor Yellow
Write-Host $PSItem.Exception.StackTrace
# Write possible suggestions
Write-Host "`nIf you are using an antivirus, try configuring exclusions"
+12
2023-11-28 16:11:11 -06:00
}
}