scriptdeck.sdPlugin/On_ScriptDeck.Start-Process.KeyDown.ps1
if (-not $event.MessageData.payload.settings) { return } $settingsSplat = @{} $command = $ExecutionContext.SessionState.InvokeCommand.GetCommand('Start-Process', 'Cmdlet') foreach ($prop in $event.MessageData.payload.settings.psobject.properties) { if ($prop.Name -match '(?<n>.+)Script$' -and $command.Parameters.($Matches.n) ) { $sb = try { [ScriptBlock]::Create($prop.Value) } catch { } if ($sb) { $settingsSplat[$command.Parameters[$Matches.n]] = & $sb } } elseif ($command.parameters.($prop.Name)) { $settingsSplat[$prop.Name] = $prop.Value } } foreach ($k in @($settingsSplat.Keys)) { if (-not $settingsSplat[$k]) { $settingsSplat.Remove($k) } } try { & $command @settingsSplat Send-StreamDeck -ShowOK -Context $event.MessageData.Context } catch { Send-StreamDeck -ShowAlert -Context $event.MessageData.Context $_ | Out-GridView } |