@@ -11,71 +11,89 @@ function Setup-ScheduledTask {
1111 [ValidateNotNullOrEmpty ()]
1212 [string []]$DefinitionDirectory
1313 ,
14- [Parameter (ParameterSetName = ' DefinitionObject' , Mandatory = $true )]
14+ [Parameter (ParameterSetName = ' DefinitionObject' , Mandatory = $true , ValueFromPipeline = $true )]
1515 [ValidateNotNullOrEmpty ()]
1616 [object []]$DefinitionObject
1717 ,
1818 [Parameter (ParameterSetName = ' DefinitionFile' , Mandatory = $false )]
1919 [Parameter (ParameterSetName = ' DefinitionDirectory' , Mandatory = $false )]
2020 [switch ]$AsJson
2121 )
22- try {
23- # Import definitions as an array of hashtable definitions
24- $DefinitionsCollection = New-Object System.Collections.ArrayList
25- if ($DefinitionFile ) {
26- $DefinitionFileCollection = Get-Item $DefinitionFile
27- }elseif ($DefinitionDirectory ) {
28- $DefinitionFileCollection = if ($AsJson ) {
29- Get-ChildItem $DefinitionDirectory - File | ? { $_.Extension -eq ' .json' }
30- }else {
31- Get-ChildItem $DefinitionDirectory - File | ? { $_.Extension -eq ' .ps1' }
32- }
33- }
34- if (! $DefinitionObject ) {
35- if (! $DefinitionFileCollection ) {
36- " No definitions could be found from the specified definition files or directories." | Write-Error
37- return
22+ begin {
23+ try {
24+ # Import definitions as an array of hashtable definitions (begin)
25+ $DefinitionsCollection = New-Object System.Collections.ArrayList
26+ if ($DefinitionFile ) {
27+ $DefinitionFileCollection = Get-Item $DefinitionFile
28+ }elseif ($DefinitionDirectory ) {
29+ $DefinitionFileCollection = if ($AsJson ) {
30+ Get-ChildItem $DefinitionDirectory - File | ? { $_.Extension -eq ' .json' }
31+ }else {
32+ Get-ChildItem $DefinitionDirectory - File | ? { $_.Extension -eq ' .ps1' }
33+ }
3834 }
39- }
40- if (! $DefinitionObject ) {
41- $DefinitionCollectionRaw = $DefinitionFileCollection | % {
42- if ($AsJson ) {
43- Get-Content $_.FullName | ConvertFrom-Json
44- }else {
45- . $_.FullName
35+ if ($DefinitionFile -or $DefinitionDirectory ) {
36+ if (! $DefinitionFileCollection ) {
37+ " No definitions could be found from the specified definition files or directories." | Write-Error
38+ return
39+ }
40+ $DefinitionCollectionRaw = $DefinitionFileCollection | % {
41+ if ($AsJson ) {
42+ Get-Content $_.FullName | ConvertFrom-Json
43+ }else {
44+ . $_.FullName
45+ }
4646 }
47+ }elseif ($DefinitionObject ) { # $DefinitionObject being non-null in the begin block indicates the value was not passed via pipeline
48+ $isDefinitionObjectValueFromPipeline = $false
49+ }else {
50+ $isDefinitionObjectValueFromPipeline = $true
4751 }
48- }elseif ($DefinitionObject ) {
49- $DefinitionCollectionRaw = $DefinitionObject
50- }
51- $DefinitionCollectionRaw | % {
52- $definitionHashtable = if ($_.GetType () -ne [hashtable ]) { $_ | ConvertTo-Hashtable } else { $_ }
53- $definition = $definitionHashtable | Validate- DefinitionObject
54- if ($definition ) { $DefinitionsCollection.Add ($definition ) | Out-Null }
52+ }catch {
53+ Write-Error - Exception $_.Exception - Message $_.Exception.Message - Category $_.CategoryInfo.Category - TargetObject $_.TargetObject
5554 }
55+ }process {
56+ try {
57+ # Import definitions as an array of hashtable definitions (process)
58+ if ($DefinitionObject ) {
59+ $DefinitionCollectionRaw = $DefinitionObject # Store the array of objects or present object of $DefinitionObject processed within the pipeline
60+ }
61+ $DefinitionCollectionRaw | % {
62+ $definitionHashtable = if ($_.GetType () -ne [hashtable ]) { $_ | ConvertTo-Hashtable } else { $_ }
63+ $definition = $definitionHashtable | Validate- DefinitionObject
64+ if ($definition ) {
65+ if ($DefinitionObject ) {
66+ if ($isDefinitionObjectValueFromPipeline ) {
67+ $DefinitionsCollection.Clear () # Clear the $DefinitionsCollection arraylist to have the variable store only the present object of $DefinitionObject processed within the pipeline
68+ }
69+ }
70+ $DefinitionsCollection.Add ($definition ) | Out-Null
71+ }
72+ }
5673
57- # Serialize definitions
58- $DefinitionsCollectionSerialized = $DefinitionsCollection | % {
59- " Serializing task definition:" | Write-Verbose
60- $_ | Out-String - Stream | % { $_.Trim () } | ? { $_ } | Write-Verbose
61- try {
62- Serialize- DefinitionObject - DefinitionObject $_
63- }catch {
64- Write-Error - Exception $_.Exception - Message $_.Exception.Message - Category $_.CategoryInfo.Category - TargetObject $_.TargetObject
74+ # Serialize definitions
75+ $DefinitionsCollectionSerialized = $DefinitionsCollection | % {
76+ " Serializing task definition:" | Write-Verbose
77+ $_ | Out-String - Stream | % { $_.Trim () } | ? { $_ } | Write-Verbose
78+ try {
79+ Serialize- DefinitionObject - DefinitionObject $_
80+ }catch {
81+ Write-Error - Exception $_.Exception - Message $_.Exception.Message - Category $_.CategoryInfo.Category - TargetObject $_.TargetObject
82+ }
6583 }
66- }
6784
68- # Setup scheduled tasks
69- $DefinitionsCollectionSerialized | % {
70- " Setting up task:" | Write-Verbose
71- $_ | Out-String - Stream | % { $_.Trim () } | ? { $_ } | Write-Verbose
72- try {
73- Apply- ScheduledTask - DefinitionObject $_
74- }catch {
75- Write-Error - Exception $_.Exception - Message $_.Exception.Message - Category $_.CategoryInfo.Category - TargetObject $_.TargetObject
85+ # Setup scheduled tasks
86+ $DefinitionsCollectionSerialized | % {
87+ " Setting up task:" | Write-Verbose
88+ $_ | Out-String - Stream | % { $_.Trim () } | ? { $_ } | Write-Verbose
89+ try {
90+ Apply- ScheduledTask - DefinitionObject $_
91+ }catch {
92+ Write-Error - Exception $_.Exception - Message $_.Exception.Message - Category $_.CategoryInfo.Category - TargetObject $_.TargetObject
93+ }
7694 }
95+ }catch {
96+ Write-Error - Exception $_.Exception - Message $_.Exception.Message - Category $_.CategoryInfo.Category - TargetObject $_.TargetObject
7797 }
78- }catch {
79- Write-Error - Exception $_.Exception - Message $_.Exception.Message - Category $_.CategoryInfo.Category - TargetObject $_.TargetObject
8098 }
8199}
0 commit comments