pages/self-service.ps1
New-UDPage -Url 'self-service/:scriptName' -Endpoint { param($ScriptName) $Script = Get-UAScript -Name "$ScriptName.ps1" $DefaultPowerShellVersion = (Get-UAPowerShellVersion -Id 1).Version $RequiredPowerShellVersion = $Script.RequiredPowerShellVersion $RequiredPowerShellVersionDisplayString = if($null -eq $RequiredPowerShellVersion){"None Specified"}else{$RequiredPowerShellVersion} $PowerShellVersions = Get-UAPowerShellVersion $ScriptParameters = Get-UAScriptParameter -ScriptId $Script.Id New-UDPageHeader -Text $Script.Name #New-UDParagraph -Text " " #Spacer New-UDTabContainer -Tabs { New-UDTab -Text 'General' -Content { New-UDCard -Content { New-UDLayout -Columns 2 -Content { New-UDHtml -Markup ("<b>PowerShell Version</b>: $($RequiredPowerShellVersionDisplayString)") #New-UDHtml -Markup ("<b>Arguments</b>: ") #TODO Show Arugements } } } if ($ScriptParameters.Length -gt 0) { New-UDTab -Text 'Parameters' -Content { New-UDCard -Content { $ScriptParameters | ForEach-Object { New-UDTextbox -Label $_.Name -Id ("RunScriptModal_" + $_.Name) -Type text } } #New-UDTextbox -Id "RunScriptModalTextBoxArgumentOverride" -Label "Arguments" -Type text } } if($null -eq $RequiredPowerShellVersion) { New-UDTab -Text 'Overrides' -Content { New-UDCard -Content { New-UDSelect -Id "RunScriptModalSelectPowerShellVersion" -Label "Override PowerShell Version" -Option { New-UDSelectOption -Name "Use Default" -Value $DefaultPowerShellVersion $PowerShellVersions | ForEach-Object { New-UDSelectOption -Name $_.Version -Value $_.Version } } } #New-UDTextbox -Id "RunScriptModalTextBoxArgumentOverride" -Label "Arguments" -Type text } } } New-UDElement -Tag div -Attributes @{ style = @{ textAlign = "right" } } -Content { New-UDButton -Text "Run" -Icon play -OnClick { $RequiredPowerShellVersion = $Script.RequiredPowerShellVersion $ScriptParameters = Get-UAScriptParameter -ScriptId $Script.Id if ($ScriptParameters.Length -gt 0) { $parameters = @{} $ScriptParameters | ForEach-Object { $TextBoxID = ("RunScriptModal_" + $_.Name) #$parameters[$_.Name] = Get-Variable -Name $_.Name -ValueOnly $parameters[$_.Name] = ((Get-UDElement -Id $TextBoxID).Attributes["value"]) } } If($null -eq $RequiredPowerShellVersion) { $OverridePowerShellVersion = ((Get-UDElement -Id 'RunScriptModalSelectPowerShellVersion').Attributes["value"]) if($null -eq $OverridePowerShellVersion -or $OverridePowerShellVersion -eq "" -or $OverridePowerShellVersion -eq "null"){$OverridePowerShellVersion = $DefaultPowerShellVersion} #TODO $OverrideArguments = ((Get-UDElement -Id 'RunScriptModalTextBoxArgumentOverride').Attributes["value"]) if ($ScriptParameters.Length -gt 0) { #TODO This Failes $Job = Invoke-UAScript -Id $Script.Id -PowerShellVersion $OverridePowerShellVersion @parameters } else { $Job = Invoke-UAScript -Id $Script.Id -PowerShellVersion $OverridePowerShellVersion } } else { if ($ScriptParameters.Length -gt 0) { $Job = Invoke-UAScript -Id $Script.Id @parameters } else { $Job = Invoke-UAScript -Id $Script.Id #TODO Argument Overrides } } Invoke-UDRedirect -Url "/job/$($Job.Id)" } } } |