src/Publish-CciCustomizationBats.ps1

function Publish-CciCustomizationBats {
    [CmdletBinding()]
    param (
        [string]$targetDir = 'C:\Users\public\Desktop',
        $moduleName,
        [string]$team,
        [switch]$NoClobber
    )
    begin {
        Write-Verbose "$(Get-Date) : Started running $($MyInvocation.MyCommand)"
        $moduleParentPath = "C:\CCI\$moduleName"
        $artifactsPath = Join-Path -Path $moduleParentPath -ChildPath "artifacts"

        if ([string]::IsNullOrWhiteSpace($team)) {
            [string]$teamSequence = [string]::Empty
            [string]$batTeamFlag = [string]::Empty
            [string]$templateDir = [string]::Empty
            [string]$getTemplateArtifacts = [string]::Empty
        }
        else {
            [string]$teamSequence = "_$team"
            [string]$batTeamFlag = " -Team $team"
            [string]$templateDir = "-templateDir $artifactsPath\templates\$team"
            [string]$getTemplateArtifacts = "Get-CciArtifact templates;"
        }

        $sequences = Get-Content "C:\CCI\$moduleName\artifacts\sequences$teamSequence.json" | ConvertFrom-Json
    }
    process {
        foreach ($sequence in ($sequences | Get-Member -MemberType NoteProperty).Name) {
            $batFileFullPath = "$($targetDir)\$($sequence).bat"
            $fileExists = Test-Path "$batFileFullPath"
            if (!$fileExists){
                Write-Host "Creating $($batFileFullPath)"
                $bat = New-Item -Name "$sequence.bat" -Path $targetDir -ItemType File
                Add-Content -Path $bat.FullName -Value "powershell -NoProfile -ExecutionPolicy Bypass -Command `"& {Start-Process powershell.exe -ArgumentList 'Set-ExecutionPolicy Bypass -Force; Get-cciModule -Name $moduleName$batTeamFlag; Import-module c:\CCI\$moduleName\$moduleName.psd1 -Force; $getTemplateArtifacts Initialize-CciCustomizationsSequence $templateDir -Template $($sequences.$sequence)' -Verb RunAs}`""
            }
            else {
                if (!($NoClobber)){
                    Write-Host "Overwriting $($batFileFullPath)"
                    Remove-Item -Path $batFileFullPath -Force
                    $bat = New-Item -Name "$sequence.bat" -Path $targetDir -ItemType File
                    Add-Content -Path $bat.FullName -Value "powershell -NoProfile -ExecutionPolicy Bypass -Command `"& {Start-Process powershell.exe -ArgumentList 'Set-ExecutionPolicy Bypass -Force; Get-cciModule -Name $moduleName$batTeamFlag; Import-module c:\CCI\$moduleName\$moduleName.psd1 -Force; $getTemplateArtifacts Initialize-CciCustomizationsSequence $templateDir -Template $($sequences.$sequence)' -Verb RunAs}`""
                }
                else {
                    Write-Host "$($batFileFullPath) already exists, skipping"
                }
        }
            }

    }
    end {
        Write-Verbose "$(Get-Date) : Finished running $MyInvocation.MyCommand"
    }
}
#(goto) 2>nul & del "%~f0"