Private/Set-FPControlFiles.ps1
function Set-FPControlFiles { <# .SYNOPSIS Create and Manipulate Files .DESCRIPTION Process Configuration Control: Files .PARAMETER DataSet XML data from control file import .EXAMPLE Set-FPControlFiles -DataSet $xmldata #> [CmdletBinding(SupportsShouldProcess = $True)] param ( [parameter(Mandatory = $True)] $DataSet ) Write-FPLog "--------- file assignments: begin ---------" foreach ($file in $DataSet) { $fileDevice = $file.device $collection = $file.collection $fileSource = $file.source $fileTarget = $file.target $action = $file.action Write-FPLog "device................ $fileDevice" Write-FPLog "collection............ $collection" Write-FPLog "action................ $action" Write-FPLog "source................ $fileSource" Write-FPLog "target................ $fileTarget" if ($TestMode) { Write-FPLog "TEST MODE: no changes will be applied" } else { switch ($action) { 'download' { Write-FPLog "downloading file" if ($fileSource.StartsWith('http') -or $fileSource.StartsWith('ftp')) { try { Import-Module BitsTransfer Start-BitsTransfer -Source $fileSource -Destination $fileTarget if (Test-Path $fileTarget) { Write-FPLog "file downloaded successfully" } else { Write-FPLog -Category "Error" -Message "failed to download file!" } } catch { Write-FPLog -Category "Error" -Message $_.Exception.Message } } else { try { Copy-Item -Source $fileSource -Destination $fileTarget -Force | Out-Null if (Test-Path $fileTarget) { Write-FPLog "file downloaded successfully" } else { Write-FPLog -Category "Error" -Message "failed to download file!" } } catch { Write-FPLog -Category "Error" -Message "failed to download file!" } } break } 'rename' { Write-FPLog "renaming file" if (Test-Path $fileSource) { Rename-Item -Path $fileSource -NewName $fileTarget -Force | Out-Null if (Test-Path $fileTarget) { Write-FPLog "file renamed successfully" } else { Write-FPLog -Category "Error" -Message "failed to rename file!" } } else { Write-FPLog -Category "Warning" -Message "source file not found: $fileSource" } break } 'copy' { Write-FPLog "copying file" if (Test-Path $fileSource) { Copy-Item -Path $fileSource -Destination $fileTarget -Force | Out-Null if (Test-Path $fileTarget) { Write-FPLog "file copied successfully" } else { Write-FPLog -Category "Error" -Message "failed to copy file!" } } else { Write-FPLog -Category "Warning" -Message "source file not found: $fileSource" } break } 'move' { Write-FPLog "moving file" if (Test-Path $fileSource) { Move-Item -Path $fileSource -Destination $fileTarget -Force | Out-Null if (Test-Path $fileTarget) { Write-FPLog "file moved successfully" } else { Write-FPLog -Category "Error" -Message "failed to move file!" } } else { Write-FPLog -Category "Warning" -Message "source file not found: $fileSource" } break } 'delete' { Write-FPLog "deleting file" if (Test-Path $fileSource) { try { Remove-Item -Path $fileSource -Force | Out-Null if (-not(Test-Path $fileSource)) { Write-FPLog "file deleted successfully" } else { Write-FPLog -Category "Error" -Message "failed to delete file!" } } catch { Write-FPLog -Category "Error" -Message $_.Exception.Message } } else { Write-FPLog "source file not found: $fileSource" } break } } # switch } } # foreach Write-FPLog "--------- file assignments: finish ---------" } |