-
Notifications
You must be signed in to change notification settings - Fork 96
/
Copy pathStart-NAVVersionModuleSearch.ps1
73 lines (52 loc) · 2.65 KB
/
Start-NAVVersionModuleSearch.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
function Start-NAVVersionModuleSearch {
<#
.SYNOPSIS
.DESCRIPTION
.EXAMPLE
#>
$Scripts = @()
$Scripts += Get-NAVModuleVersionSearchJobTask 'Microsoft.Dynamics.Nav.Management.psm1' 'Microsoft.Dynamics.Nav.Management.dll' 'NAV Management'
$Scripts += Get-NAVModuleVersionSearchJobTask 'Microsoft.Dynamics.NAV.Model.Tools.psd1' 'Microsoft.Dynamics.NAV.Model.Tools.dll' 'NAV Model Tools'
$Scripts += Get-NAVModuleVersionSearchJobTask 'Microsoft.Dynamics.Nav.Apps.Tools.psd1' 'Microsoft.Dynamics.Nav.Apps.Tools.dll' 'NAV Apps Tools'
$Scripts += Get-NAVModuleVersionSearchJobTask 'Microsoft.Dynamics.NAV.Apps.Management.psd1' 'Microsoft.Dynamics.Nav.Apps.Management.dll' 'NAV Apps Management'
if ($global:NAVJobManager -eq $null) {
$global:NAVJobManager = New-Object PSObject
}
if ($global:NAVJobManager.MVS -eq $null) {
# MVS => Module-Version Search
$mvs = New-Object PSObject
$mvs | Add-Member NoteProperty ScriptsToRun @()
$mvs | Add-Member NoteProperty Jobs @()
$mvs | Add-Member NoteProperty Results @()
$mvs | Add-Member NoteProperty Errors @()
$global:NAVJobManager | Add-Member MVS $mvs
}
$global:NAVJobManager.MVS.ScriptsToRun = $Scripts
$counter = 0;
foreach ($script in $global:NAVJobManager.MVS.ScriptsToRun) {
try {
$global:NAVJobManager.MVS.Jobs += Start-Job -ScriptBlock $script.ScriptBlock -ArgumentList $script.NavModuleName, $script.NavModuleDllName, $script.NavModuleTitle
Register-ObjectEvent -InputObject $global:NAVJobManager.MVS.Jobs[$counter] -EventName StateChanged -Action {
try {
if($sender.State -ne [System.Management.Automation.JobState]::Completed) {
throw "Task has failed: " + $sender.ChildJobs[0].JobStateInfo.Reason.Message
}
$global:NAVJobManager.MVS.Results += Receive-Job $Sender -Keep
}
catch {
$global:NAVJobManager.MVS.Errors += $_.Exception
}
finally {
$global:NAVJobManager.MVS.Jobs = $global:NAVJobManager.MVS.Jobs | Where-Object { $_.Id -ne $sender.Id }
Unregister-Event $eventsubscriber.SourceIdentifier
Remove-Job $Sender
}
} | Out-Null
$counter++
}
catch {
$global:NAVJobManager.MVS.Errors += $_.Exception
}
}
#return $global:JobManager
}