Functions/Invoke-Deployment.ps1

function Invoke-Deployment {
    [cmdletbinding()]
    param (
        [Parameter(Mandatory = $true, ParameterSetName = "TEST")]
        [Switch]$Test,
        [Parameter(Mandatory = $true, ParameterSetName = "ACC")]
        [Switch]$Acc,
        [Parameter(Mandatory = $true, ParameterSetName = "PROD")]
        [Switch]$Prod,
        [Parameter(Mandatory = $true)]
        [ValidateSet("URA10", "URAME", "Recalc", "SIV-RS", "SIV-BA", "DRP")]
        [string]$App,
        [Parameter(Mandatory = $true)]
        [ValidateScript( {Test-Path $_ })]
        [System.IO.FileInfo]$SourceFolder,
        [Parameter(Mandatory = $true)]
        [ValidateSet("All", "OnlyExe")]
        [string]$DeploymentType
    )


    switch ($PSCmdlet.ParameterSetName) {
        "TEST" {
            $Citrix = "TEST"
        }
        "ACC" {
            $Citrix = "ACC"
        }
        "PROD" {
            $Citrix = "PROD"
        }
    }

    switch ($App) {
        "URA10" {
            $Result = Invoke-Ura10Deployment -Citrix $Citrix
        }
        "URAME" {
            $Result = Invoke-UraMeDeployment -Citrix $Citrix
        }
        "Recalc" {
            $Result = Invoke-RecalcDeployment -Citrix $Citrix
        }
        "SIV-RS" {
            $Result = Invoke-SivRsDeployment -Citrix $Citrix
        }
        "SIV-BA" {
            $Result = Invoke-SivBaDeployment -Citrix $Citrix
        }
        "DRP" {
            $Result = Invoke-DrpDeployment -Citrix $Citrix
        }
    }

    Write-LogApp INFO "Startujem skriptu" $App
    Write-LogApp INFO "Izabrano je $Citrix okruzenje" $App

    Add-Type -AssemblyName System.Windows.Forms -ErrorAction Stop | Out-Null

    #verzija aplikacije
    try {
        $Exe = Get-ItemProperty -Path $SourceFolder\$($Result.AppExe) -ErrorAction Stop
        $Verzija = ($Exe.VersionInfo.FileVersion).Trim()
        if ($Verzija) {
            Write-LogApp INFO "$App verzija za deploy $Verzija" $App
        }
        else {
            Write-LogApp INFO "$AppExe nema u sebi informaciju o verziji" $App
        }
    }
    catch {
        Write-Warning -Message "Greska u povlacenju $AppExe verzije. Error: $_" -Verbose
        Write-LogApp ERROR "Greska u povlacenju $AppExe verzije | Error: $_" $App
        Prekid
        break
    }

    #Provera pre predstave
    $MsgBoxText = "
        Aplikacija: $App `
        Verzija: $Verzija `
        Deployment tip: $DeploymentType `
        Citrix okruzenje: $Citrix `
        Da li zelis da uradi deployment? "

    $MsgBox = [System.Windows.Forms.MessageBox]::Show($MsgBoxText, "Potvrda", "YesNo", "Question")
    if ($MsgBox -eq "No") {
        Write-Warning -Message "Korisnik odustao od prebacivanja nove verzije" -Verbose
        Write-LogApp INFO "Korisnik odustao od prebacivanja nove verzije" $App
        Prekid
        break
    }
    elseif ($MsgBox -eq "Yes") {
        Write-Verbose -Message "Korisnik potvrdio deploy verzije $Verzija na $Citrix okruzenje"
        Write-LogApp INFO "Korisnik potvrdio deploy verzije $Verzija na $Citrix okruzenje" $App
    }

    $DeploymentShowParams = @{
        App                 = $App
        AppExe              = $Result.AppExe
        Verzija             = $Verzija
        DestinationFolder   = $Result.DestinationFolder
        Citrix              = $Citrix
        SourceFolder        = $SourceFolder
        DeploymentLogFolder = $Result.DeploymentLogFolder
        DeploymentType      = $DeploymentType
    }

    Invoke-DeploymentShow @DeploymentShowParams
}