This is a small thing I figured out to request user input and pass it as a parameter to a console task by using PowerShell.
The client wanted to be able to create tickets from an alert in the console if they were missed by an operator or notification script. The notifications pass the different parameters to a PowerShell script that generates the ticket. So far so good. But they wanted to call the notification from a Alert Console task. There are different parameters that need to be customized per alert to generate the correct ticket. One option was to create an Alert Console task for ALL the different classifications of alerts which would be a nightmare from manageability perspective + clutter the console.
I came up with a small PowerShell script which will ask the user for input and use that input to generate the ticket with the correct info. The user still needs to know what to fill in but still it’s better than creating all the different Alert Console tasks.
This script is reusable in all your scripts you need to make interactive so you can prompt users for input during a console task.
In this example I’ve created a small Alert Console Task to connect to a Remote server via Remote desktop connection which can be different than the server which is generating the alert you’ve selected.
The PowerShell script I used in this example can be downloaded here
First things first. We need to create the console task.
Navigate to the Authoring pane > Management pack objects > tasks > create new task.
In the selection window select a Console Task > Alert Command line (This is necessary if we want to pass parameters from the alert to the script we would like to run)
Name your task.
Note: This will be the actual name which will appear in your console so keep it short and simple but clear enough so someone will know what the task will do.
Note: I’ve created a separate management pack for all my Console Tasks
Specify the command line options:
Note: The script must be copied to the local computer where the console is installed. In this case: c:\scripts\consoletask\
Hints:
When saved, the Task will appear between the Alert Tasks in the task pane when you select an alert.
When you click the task the Console Task Output window will pop up together with a window asking the user to put in a servername. If the user clicks cancel the task is terminated.
Success! The remote connection is started with the server we have put in!
Now that we have verified everything is working we can disable the task console window so only the prompt for input is shown.
Open the task properties and deselect the box “Display output when this task is run”
The PowerShell script I used in this example can be downloaded here
The section which is responsible for the input is here so if you have existing scripts this is what you are looking for to make them interactive:
#Get the server to connect to
[System.Reflection.Assembly]::LoadWithPartialName(‘Microsoft.VisualBasic’) | Out-Null
$server = [Microsoft.VisualBasic.Interaction]::InputBox(“Enter a Servername”, “Servername”, “”)