8
8
$mainTimer = [System.Diagnostics.Stopwatch ]::StartNew()
9
9
$stepTimer = [System.Diagnostics.Stopwatch ]::StartNew()
10
10
11
- # Import utility functions
12
- $scriptPath = Split-Path - Parent $MyInvocation.MyCommand.Path
13
- . " $scriptPath /scripts/utils/Minimize.ps1" # To get better screenshots we need to minimize the "Administrator" CMD window
14
- . " $scriptPath /scripts/utils/TimedMessage.ps1"
15
- . " $scriptPath /scripts/utils/Invoke.ps1" # Function to invoke a script with a timeout
16
- . " $scriptPath /scripts/utils/Screenshot.ps1"
17
- . " $scriptPath /scripts/utils/Path.ps1"
11
+ Set-Variable - Name MainScriptDir - Value " $PSScriptRoot " - Option Constant
18
12
13
+ # Import utility functions
14
+ . " $MainScriptDir /scripts/utils/Invoke.ps1" # Function to invoke a script with a timeout
15
+ . " $MainScriptDir /scripts/utils/Minimize.ps1" # To get better screenshots we need to minimize the "Administrator" CMD window
16
+ . " $MainScriptDir /scripts/utils/Path.ps1"
17
+ . " $MainScriptDir /scripts/utils/Screenshot.ps1"
18
+ . " $MainScriptDir /scripts/utils/TimedMessage.ps1"
19
19
20
20
Write-TimedMessage " Current directory: $ ( pwd) " - StartNewStep
21
- $srcDir = NormalizeDirPath $SourceDir
22
- Write-Host " Using source directory: $srcDir "
23
- $srcDir = GetAbsPath - path $srcDir - basePath $PSScriptRoot
24
- Write-TimedMessage " Normalized source abs directory: $srcDir "
21
+ # This directory contains the directories associated with the office documents
22
+ $mainSourceDir = NormalizeDirPath (Resolve-Path $SourceDir ).Path
23
+ $mainSourceDir = ReNormalizeDirPath $mainSourceDir
24
+ Write-Host " Main Source Dir: $mainSourceDir "
25
+
26
+ # Check if the source dir was resolved correctly
27
+ if (-not (Test-Path $mainSourceDir )) {
28
+ Write-Host " 🔴 Error: Source directory not found: $mainSourceDir "
29
+ exit 1
30
+ }
25
31
26
32
# Read name of the folders under the specified source directory into an array
27
- $folders = Get-ChildItem - Path " $srcDir " - Directory | Select-Object - ExpandProperty Name
28
- Write-TimedMessage " Folders in ${srcDir } : $folders " - StartNewStep
33
+ $fileDirNames = Get-ChildItem - Path " $mainSourceDir " - Directory | Select-Object - ExpandProperty Name
34
+ Write-TimedMessage " Folders in ${mainSourceDir } : $fileDirNames " - StartNewStep
29
35
30
36
# Check if the folders array is empty
31
- if ($folders .Count -eq 0 ) {
32
- Write-TimedMessage " No folders found in ${srcDir } . Exiting script." - StartNewStep
37
+ if ($fileDirNames .Count -eq 0 ) {
38
+ Write-TimedMessage " No folders found in ${mainSourceDir } . Exiting script." - StartNewStep
33
39
exit 1
34
40
}
35
41
@@ -52,16 +58,16 @@ function Get-OfficeApp {
52
58
53
59
# Create a list of Office applications that are needed based on the file extensions of the folders
54
60
Write-TimedMessage " Identifying required Office applications" - StartNewStep
55
- foreach ($folder in $folders ) {
56
- $fileExtension = GetFileExtension $folder
57
- $app = Get-OfficeApp - FileExtension $fileExtension
61
+ foreach ($fileDirName in $fileDirNames ) {
62
+ $fileExt = GetFileExtension $fileDirName
63
+ $app = Get-OfficeApp - FileExtension $fileExt
58
64
59
65
if ($app ) {
60
66
if ($officeApps -notcontains $app ) {
61
67
$officeApps += $app
62
68
}
63
69
} else {
64
- Write-TimedMessage " Unknown file extension: $fileExtension . Skipping..."
70
+ Write-TimedMessage " Unknown file extension: $fileExt . Skipping..."
65
71
continue
66
72
}
67
73
}
@@ -71,6 +77,7 @@ Write-TimedMessage "Required Office applications: $officeApps"
71
77
Write-TimedMessage " Open and close Office applications" - StartNewStep
72
78
. " $PSScriptRoot /scripts/Open-Close-Office.ps1" $officeApps
73
79
Write-TimedMessage " Completed opening and closing Office applications"
80
+ Take- Screenshot - OutputPath " ${srcDir} screenshots/AllOfficeAppClosed_{{timestamp}}.png"
74
81
Write-Host " ========================="
75
82
76
83
# Enable VBOM for each Office application
@@ -86,34 +93,31 @@ Write-TimedMessage "Minimizing Administrator window" -StartNewStep
86
93
Minimize- Window " Administrator: C:\actions"
87
94
Write-TimedMessage " Window minimized"
88
95
89
- $originalSrcDir = $srcDir
90
-
91
- foreach ($folder in $folders ) {
96
+ foreach ($fileDirName in $fileDirNames ) {
92
97
Write-Host " ========================="
93
98
# Reset the source directory to the original value
94
- $srcDir = $originalSrcDir
95
99
96
- Write-TimedMessage " Processing folder: $folder " - StartNewStep
97
- $fileExtension = $folder.Substring ($folder.LastIndexOf (' .' ) + 1 )
98
- Write-Host " File extension: $fileExtension "
99
- $app = Get-OfficeApp - FileExtension $fileExtension
100
+ Write-TimedMessage " Processing folder: $fileDirName " - StartNewStep
101
+ $fileExt = $folder.Substring ($folder.LastIndexOf (' .' ) + 1 )
102
+ Write-Host " File extension: $fileExt "
103
+ $app = Get-OfficeApp - FileExtension $fileExt
100
104
101
105
$ext = " "
102
106
if ($app -ne " Access" ) {
103
107
$ext = " zip"
104
- Write-TimedMessage " Creating Zip file and renaming to Office document target with path ${srcDir }${folder } " - StartNewStep
105
- . " $PSScriptRoot /scripts/Zip-It.ps1" " ${srcDir }${folder } "
108
+ Write-TimedMessage " Creating Zip file and renaming to Office document target with path ${mainSourceDir }${fileDirName } " - StartNewStep
109
+ & " $PSScriptRoot /scripts/Zip-It.ps1" " ${mainSourceDir }${fileDirName } "
106
110
Write-TimedMessage " Zip file created"
107
111
}
108
112
else {
109
113
$ext = " accdb"
110
- Write-TimedMessage " Copying folder and content to Skeleton folder " - StartNewStep
111
- Copy-Item - Path " ${srcDir }${folder } /DBSource" - Destination " ${srcDir }${folder } /Skeleton" - Recurse - Force
112
- Write-TimedMessage " Folder copied"
114
+ Write-TimedMessage " Copying directory and content to Skeleton directory " - StartNewStep
115
+ Copy-Item - Path " ${mainSourceDir }${fileDirName } /DBSource" - Destination " ${mainSourceDir }${fileDirName } /Skeleton" - Recurse - Force
116
+ Write-TimedMessage " Directory copied"
113
117
}
114
118
115
119
Write-TimedMessage " Copying and renaming file to correct name" - StartNewStep
116
- . " $PSScriptRoot /scripts/Rename-It.ps1" " ${srcDir}${folder} " " $ext "
120
+ & " $PSScriptRoot /scripts/Rename-It.ps1" " ${srcDir}${folder} " " $ext "
117
121
Write-TimedMessage " File renamed"
118
122
119
123
Write-TimedMessage " Importing VBA code into Office document" - StartNewStep
0 commit comments