Public/Set-LogDirectory.ps1

function Set-LogDirectory
{
    <#
        .DESCRIPTION
            Set the directory where the log file will be created
         
        .PARAMETER ScriptRoot
            Specify the root directory the parent script is called from
 
        .EXAMPLE
            Set-LogDirectory -ScriptRoot $PSScriptRoot
 
        .NOTES
            Created by: Jon Anderson
            Modified: 2023-07-03
    #>

    [CmdletBinding()]
    param(   
        [parameter(Mandatory=$true)][ValidateNotNullOrEmpty()]
        [String]$ScriptRoot
    )

    $ConfigMgrPath = "$ENV:WINDIR\CCM\Logs"
    $IntunePath = "$ENV:ALLUSERSPROFILE\Microsoft\IntuneManagementExtension\Logs"
    $DefaultPath = "$ENV:ALLUSERSPROFILE\Win32AppManagement"
    if(($ScriptRoot -match "ccmcache") -and (Test-Path $ConfigMgrPath))
    {
        return $ConfigMgrPath
    }
    elseif(($ScriptRoot -match "IMECache") -and (Test-Path $IntunePath))
    {
        return $IntunePath
    }
    else
    {
        if(!(Test-Path $DefaultPath))
        {
            try
            {
                New-Item -Path $DefaultPath -ItemType "Directory" -Force -ErrorAction Stop | Out-Null
            }
            catch
            {
                throw "Failed to create the log directory: $($PSItem.Exception.Message)"
            }   
        }
        return $DefaultPath
    }
}