Button guide
Let your helpdesk run PowerShell scripts from a browser form one approved command, every run logged, access you can revoke
Button (https://button.bitgate.dev) turns a PowerShell script on your own computer into a web form your helpdesk colleagues can open in a browser, fill in and run, without getting the script file or access to the machine itself. The runner on your computer executes only the exact command you approved, and logs who ran it and when. You can share 1 published tool with up to 3 people and 100 runs per month on the $0 Free plan, or up to 50 tools and 250 people for $15/month on Pro.
Why shared folders and remote sessions get messy
When you maintain PowerShell scripts for user onboarding, mailbox reports or license reports, handing them off to helpdesk usually starts with a network share or a remote session. It doesn't stay clean for long.
People copy the script to their desktop, and soon you have three versions floating around that have drifted from yours. Somebody edits a line to fix a one-off ticket and forgets to change it back. And if helpdesk runs the script on their own PCs, every single PC needs the right PowerShell modules installed and kept up to date.
You can wrap a script in Show-Command to get a parameter window and pipe the output to Out-GridView for a sortable, filterable window (both work in Windows PowerShell and PowerShell 7 on Windows desktop, though not Server Core), or build a custom GUI with Windows Forms or WPF. Those still run on each colleague's PC, under that user's own permissions, with the script sitting right there on their machine.
How Button runs the script instead
With Button, the script stays on the computer where you install the Button runner. Colleagues never see the code and never get a shell. They get a web form with the inputs you defined - text, number, yes/no, choice, or files - and a Run button.
When someone submits the form, Button's servers relay the form values and any files between their browser and your computer, and the runner executes the job locally on your machine, never in Button's cloud.
A few rules keep the runner locked down:
- It only executes the exact command you approved on that computer, pinned by hash.
- Every form value is passed to your program as its own separate argument, with no shell in between.
- A form value can't start with
-, so a colleague can't sneak extra flags or switches into the command. - If you change a tool, your colleagues have to confirm the new version before they can run it.
- Every run is logged with who ran it and when, and you can revoke a colleague's access or set it to expire at any time.
Prepare your PowerShell script
Before you hook a script up to Button, make sure it takes its inputs as command-line arguments instead of hard-coded paths or interactive prompts like Read-Host. In PowerShell, that just means putting a param() block at the top.
If your script takes an input file or produces a report, take each input file path as an argument, and write the results as files into an output folder that's also passed as an argument. Any fixed flags you always want set (such as a switch your script needs on every run) belong in the command you approve; colleagues only supply the values for the form fields.
param(
[string]$Department,
[string]$InputCsv,
[string]$OutputFolder
)
# Your report or onboarding logic here
$outFile = Join-Path $OutputFolder "license-report.csv"
Put the script behind a Button form
- Sign in at https://button.bitgate.dev.
- Install the Button runner on your computer using the one-line command the site shows you. It's a PowerShell command on Windows, or
curlon macOS and Linux. - Open the local setup page, pick your PowerShell program, and approve the exact command to run.
- Describe the inputs you want on the form (text, number, yes/no, choice, or files) so they match your script's parameters, then publish. Button gives the tool its own page.
- Invite your helpdesk colleagues. They open the link from their invite email, sign in with Google or a one-time email code, fill in the form, press Run and download the results. They don't install anything, and recipients never pay.
Trade-offs and when another tool fits better
Button is built around one machine running one job at a time. That comes with real constraints you should weigh before setting it up.
Because jobs run on the computer with the runner, that machine has to have all the PowerShell modules and network access your script uses, and it has to be on and online whenever helpdesk needs the tool. Tool pages show Ready, Busy or Offline so people can see its state. Only one run happens at a time per computer, and every plan allows one computer (runner) per workspace - pairing a new computer replaces the previous one. Each run can take up to 30 minutes, log up to 1 MB, and take up to 8 files (up to 25 MB each, 100 MB total per run). Inputs are deleted 24 hours after a run ends, and outputs after 7 days. Also keep in mind that while the job executes on your machine, the form values and files do pass through Button's servers on the way there and back.
If you have a large IT team that needs scheduled jobs, role-based access, or a server that runs jobs across many machines at once, Button isn't the right fit. Look at PowerShell Universal or Rundeck instead.
PowerShell Universal (sold by Devolutions, formerly Ironman Software) you host yourself on Windows, Linux or macOS. It turns PowerShell scripts with parameters into forms and adds REST APIs, apps and dashboards, role-based access, schedules and job history. There's a free Developer edition for non-production use, and a Server license is $499.99 per server per year.
Rundeck Open Source, maintained by PagerDuty, is another self-hosted option. You'll need to run a Java 17+ server and, in production, a database. Job options show up as a form with text, file and multi-line options, allowed values and regex checks, and jobs can run locally on the Rundeck server or on nodes over SSH or WinRM.
Plans and limits
"People" counts the distinct colleagues you've invited (you don't count), and runs per month include your own test runs. If you ever downgrade, it deletes nothing.
| Feature | Free | Pro |
|---|---|---|
| Price | $0 | $15/month, or $144/year ($12/month) |
| Published tools | 1 | 50 |
| People (invited colleagues) | 3 | 250 |
| Runs per month | 100 | 5,000 |
| File transfer per month | 1 GB | 50 GB |
| Computers (runners) per workspace | 1 | 1 |
| Max run duration | 30 minutes | 30 minutes |
| File limits per run | Up to 8 files, 25 MB each, 100 MB total | Up to 8 files, 25 MB each, 100 MB total |
FAQ
What happens if my computer is asleep or running another script?
The tool page shows Offline if the computer with the runner is off or disconnected, and Busy while a run is already in progress. Because a runner handles one run at a time, a colleague will have to wait until the current run finishes and the page shows Ready again.
Can someone pass extra PowerShell flags through the form?
No. Every form value is passed to your program as its own argument without a shell, and Button blocks any value that starts with -, so colleagues can't inject extra flags.
Do my helpdesk colleagues need a Button subscription or PowerShell installed?
No, recipients never pay and don't install anything. They open the link from their invite email in a browser, sign in with Google or a one-time email code, and run the form from there.
How long does Button keep the files from a run?
Input files are deleted 24 hours after a run ends, and output files are deleted after 7 days.
Can I use Button for scripts that aren't written in PowerShell?
Yes. Any program on your computer works, including Python, Node, R, shell scripts and compiled binaries.
Last updated
Put your script behind a form
Button turns a script on your computer into a web form. Colleagues sign in, fill it in, press Run and download the results. Free for 1 tool and 3 people.