PSDependScripts/Task.ps1
<# .SYNOPSIS Support dependencies by handling simple tasks. .DESCRIPTION Support dependencies by handling simple tasks. Relevant Dependency metadata: Target: One or more scripts to run for this task Parameters: Parameters to call against the task scripts .PARAMETER PSDependAction Only option is to install the module. Defaults to Install Install: Install the dependency .PARAMETER Dependency Dependency to process .EXAMPLE # Assumption: you prestage a script somewhere or include it in your solution Set-Content C:\Example.ps1 ' "Running a task on $(hostname)" ' # Dependency syntax with C:\Example.ps1 already in place @{ ExampleTask = @{ DependencyType = 'Task' Target = 'C:\Example.ps1' } } # Run C:\Example.ps1 # Output: Running a task on WJ-LAB .EXAMPLE # Dependency syntax with $PWD\Example.ps1 already in place @{ ExampleTask = @{ DependencyType = 'Task' Target = '$PWD\Example.ps1' } } # Run Example.ps1 from the current directory # Alternatively, you can use $DependencyPath to refer to the folder containing this dependency file #> [cmdletbinding()] param ( [PSTypeName('PSDepend.Dependency')] [psobject[]]$Dependency, [ValidateSet('Install')] [string[]]$PSDependAction = @('Install') # No logic for this ) Write-Verbose "Executing $($Dependency.count) tasks" foreach($Depend in $Dependency) { foreach($Task in $Depend.Source) { if(Test-Path $Task -PathType Leaf) { $params = @{} if($Depend.Parameters) { $params += $Depend.Parameters } . $Task @params } else { Write-Warning "Could not find task file [$Task] from dependency [$($Depend.DependencyName)]" } } } |