Improved code

pull/1/head
Tom Peltonen 2021-07-10 14:27:22 +10:00
parent 14c1642a84
commit 99e6f30195
1 changed files with 36 additions and 16 deletions

View File

@ -8,8 +8,8 @@ param (
[String] $TransferFileName, [String] $TransferFileName,
[String] $ReconcileFileName, [String] $ReconcileFileName,
[String] $SecretFileName, [String] $SecretFileName,
[switch] $ExcludeHash, [switch] $ExcludeHash
[switch] $Install7zip
) )
$default_dateLocal = Get-Date -Format "yyyyMMdd_HHmm" $default_dateLocal = Get-Date -Format "yyyyMMdd_HHmm"
@ -50,9 +50,9 @@ function Close-Log {
function New-RandomPassword { function New-RandomPassword {
param( param(
[int]$length = 20, [int] $length = 20,
[String]$characters = "abcdefghiklmnoprstuvwxyzABCDEFGHKLMNOPRSTUVWXYZ1234567890!()?}][{@#*+-", [String] $characters = "abcdefghiklmnoprstuvwxyzABCDEFGHKLMNOPRSTUVWXYZ1234567890!()?}][{@#*+-",
[switch]$ConvertToSecureString [switch] $ConvertToSecureString
) )
$password = 1..$length | ForEach-Object { Get-Random -Maximum $characters.length } $password = 1..$length | ForEach-Object { Get-Random -Maximum $characters.length }
$private:ofs="" $private:ofs=""
@ -71,7 +71,8 @@ function Set-Reconcile
Param( Param(
[Parameter(Mandatory)][String] $ReconcileFile, [Parameter(Mandatory)][String] $ReconcileFile,
[Parameter(Mandatory)][String] $FolderName, [Parameter(Mandatory)][String] $FolderName,
[switch]$Feedback = $false [String] $Filter,
[switch] $Feedback = $false
) )
if ($reconcileFile -eq "") if ($reconcileFile -eq "")
@ -134,6 +135,7 @@ function Invoke-Pack
{ {
Param( Param(
[String] $TransferFolder, [String] $TransferFolder,
[String] $Filter,
[String] $Secret, [String] $Secret,
[String] $CompressFile, [String] $CompressFile,
[String] $ReconcileFile [String] $ReconcileFile
@ -156,15 +158,29 @@ Param(
$reconcileFile = $default_reconcileFile $reconcileFile = $default_reconcileFile
} }
Compress-7Zip -Path $transferFolder -ArchiveFileName $compressFile -Format SevenZip
Set-Reconcile -ReconcileFile $reconcileFile -FolderName $transferFolder # $Files = Get-ChildItem -Path “D:\Logs_folder” -Filter “*.txt” -Recurse -File | Where-Object {$_.LastWriteTime -le $LastWrite}
$firstPack = $true
Write-Host "Folder $transferFolder"
Get-ChildItem -Path $transferFolder -Filter "*20*" -Recurse | Where-Object {$_.PSIsContainer} | ForEach-Object {
Write-Log "File found $($_.FullName)"
if ($firstPack) {
$firstPack = $false
Compress-7Zip -Path $_.FullName -ArchiveFileName $compressFile -Format SevenZip
} else {
Compress-7Zip -Path $_.FullName -ArchiveFileName $compressFile -Format SevenZip -Append
}
}
# Compress-7Zip -Path $transferFolder -ArchiveFileName $compressFile -Format SevenZip -Append
#Set-Reconcile -ReconcileFile $reconcileFile -FolderName $transferFolder -Filter $filter
Write-Log "Add reconcile file '$reconcileFile' to file '$compressFile'" Write-Log "Add reconcile file '$reconcileFile' to file '$compressFile'"
$fullReconcileName = (Get-Item $reconcileFile).FullName # $fullReconcileName = (Get-Item $reconcileFile).FullName
$fullZipName = (Get-Item $compressFile).FullName # $fullZipName = (Get-Item $compressFile).FullName
Compress-7Zip -Path $fullReconcileName -ArchiveFileName $fullZipName -Format SevenZip -Append -Password $secret -EncryptFilenames # Compress-7Zip -Path $fullReconcileName -ArchiveFileName $fullZipName -Format SevenZip -Append -Password $secret -EncryptFilenames
Remove-Item $fullReconcileName # Remove-Item $fullReconcileName
Write-Log "Package ready in file '$compressFile' from folder '$transferFolder'" Write-Log "Package ready in file '$compressFile' from folder '$transferFolder'"
Write-Host "Package ready in file '$compressFile' from folder '$transferFolder'" -ForegroundColor Green Write-Host "Package ready in file '$compressFile' from folder '$transferFolder'" -ForegroundColor Green
@ -201,7 +217,8 @@ function Invoke-Reconcile
{ {
Param( Param(
[Parameter(Mandatory)][String] $reconcileFileName, [Parameter(Mandatory)][String] $reconcileFileName,
[Parameter(Mandatory)][String] $folderName [Parameter(Mandatory)][String] $folderName,
[String] $Filter
) )
if ($reconcileFileName -eq "") if ($reconcileFileName -eq "")
@ -263,12 +280,14 @@ Write-Log "*********************************************************************
Write-Log "* Start of processing: [$dateTimeStart]" Write-Log "* Start of processing: [$dateTimeStart]"
Write-Log "***********************************************************************************" Write-Log "***********************************************************************************"
if ($install7zip) {
Install-Module -Name 7Zip4Powershell -Scope CurrentUser
}
$actioned = $false $actioned = $false
if ($action -eq "Install") {
$actioned = $true
Install-Module -Name 7Zip4Powershell -Scope CurrentUser
}
if ($action -eq "Pack") { if ($action -eq "Pack") {
$actioned = $true $actioned = $true
if (($RecipientKeyName -eq "") -and ($SecretKey -eq "")) { if (($RecipientKeyName -eq "") -and ($SecretKey -eq "")) {
@ -356,6 +375,7 @@ if (!($actioned))
Write-Host " Unpack : Unpack folder contents from secure 7Zip file" Write-Host " Unpack : Unpack folder contents from secure 7Zip file"
Write-Host " Reconcile : Reconcile files in unpack folder with list of packed files" Write-Host " Reconcile : Reconcile files in unpack folder with list of packed files"
Write-Host " ReconcileFile : Generate a reconcile file without packing" Write-Host " ReconcileFile : Generate a reconcile file without packing"
Write-Host " Install : Install required packages"
} }
Close-Log Close-Log