Public/Process-SpecItem.ps1

function Process-SpecItem {
    <#
    .SYNOPSIS
    This function processes a specified item at the given path, creating the folder if necessary and optionally setting it as hidden.
 
    .DESCRIPTION
    The function checks if the specified path exists. If it doesn't exist and CreatePath is set to FALSE, the function skips the download.
    If the path doesn't exist but CreatePath is set to TRUE or the path exists, the function creates the folder and optionally sets it as hidden.
 
    This function was specifically written for the IRL device script using the Azure Table Storage data source for the parameter values.
 
    .PARAMETER path
    The path of the folder to be processed. This parameter is mandatory.
 
    .PARAMETER CreatePath
    A switch parameter that indicates whether to create the folder if it doesn't exist. Default value is empty (FALSE).
 
    .PARAMETER Hidden
    A switch parameter that, if specified, sets the folder as hidden. Default value is empty (FALSE).
 
    .EXAMPLE
    Process-SpecItem -path "C:\ExampleFolder" -CreatePath $true -Hidden $true
    Creates the folder "C:\ExampleFolder" if it doesn't exist and sets it as hidden.
 
    .OUTPUTS
    Boolean value indicating whether the folder was created successfully.
    $true = Folder creation and / or hidden attribute evaluation will occur
    $false = Folder creation and / or hidden attribute evaluation will not occur
 
    .NOTES
    Author : owen.heaume
    Version : 1.0
    #>


    param (
        [parameter (mandatory = $true)]
        [string]$path,

        [parameter (mandatory = $false)]
        [string]$CreatePath = "",

        [parameter (mandatory = $false)]
        $Hidden
    )

    if (!(Test-Path $path) -and $CreatePath -eq "FALSE") {
        Write-Host "[$path] does not exist, but not set to create so skipping download" -ForegroundColor DarkYellow
        return $false # no need to download
    } else {
        Write-Host "Creating folder [$path]" -ForegroundColor DarkCyan
        $result = New-SpecFolder -Path $path
        switch ($result) {
            0 { Write-Host "OK" -ForegroundColor DarkGreen; $OK = $true }
            1 { Write-Host "An error occurred trying to create the folder" -ForegroundColor DarkRed; $OK = $false }
            2 { Write-Host "The folder already exists" -ForegroundColor DarkGray; $OK = $true }
        }

        if ($OK) {
            # Set folder as hidden if required
            if ($hidden -match "$true") {
                #use -match due to the way aztables sends down the data as a string
                Write-Host "Setting hidden attribute on folder" -ForegroundColor DarkCyan
                $result = Set-SpecHiddenAttribute -Path $path -Action Add
                switch ($result) {
                    0 { Write-Host "Attribute set OK" -ForegroundColor DarkGreen }
                    1 { Write-Host "Attribute was already set to hidden" -ForegroundColor DarkGray }
                }
            }
            return $true # success
        }
    }
}