functions/Set-TaskWorkDirectory.ps1

<#
.SYNOPSIS
Set the current working directory
 
.DESCRIPTION
Sets the current tasks working directory, based on the current PsLaWorkPath and the execution number that task is in the overall execution
 
Outputs the path that has been constructed
 
.PARAMETER Path
Path to the current working directory
 
The value passed in should always be the $PsLaWorkPath, to ensure that things are working
 
.PARAMETER FileName
The of the file that you want to be configured for the task
 
Is normally equal to the name of the Logic App
 
.EXAMPLE
PS C:\> Set-TaskWorkDirectory
 
Creates a new sub directory under the $PsLaWorkPath location
The sub directory is named "$taskCounter`_$TaskName"
 
The output will be: "$Path\$taskCounter`_$TaskName"
 
.NOTES
 
Author: Mötz Jensen (@Splaxi)
 
#>

function Set-TaskWorkDirectory {
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')]
    [CmdletBinding()]
    param (
        [string] $Path = $(Get-PSFConfigValue -FullName PsLogicAppExtractor.Execution.WorkPath),
        
        [string] $FileName = "$Name.json"
    )
    Set-PSFConfig -FullName PsLogicAppExtractor.Execution.TaskCounter -Value $($(Get-PSFConfigValue -FullName PsLogicAppExtractor.Execution.TaskCounter) + 1)
    $taskCounter = $(Get-PSFConfigValue -FullName PsLogicAppExtractor.Execution.TaskCounter)
    
    $taskName = $($psake.context.Peek().CurrentTaskName)
    $newPath = "$Path\$taskCounter`_$TaskName"
    New-Item -Path $newPath -ItemType Directory -Force -ErrorAction Ignore > $null

    Set-PSFConfig -FullName PsLogicAppExtractor.Execution.TaskPath -Value $newPath
    Set-PSFConfig -FullName PsLogicAppExtractor.Execution.TaskOutputFile -Value "$newPath\$fileName"
}