How it works
Point Deployy Desk at one or more folders of
.ps1 scripts (local folders or network
shares). It lists what it finds, organized by
folder. When you pick a script, Deployy Desk reads a
small metadata block at the top to build an input
form, so the person running it just fills in fields
and clicks Run. Output streams back live in a
color-coded console.
A script with no metadata block still runs; it just shows up with its file name and no form. Adding the block is what turns it into something anyone can use safely.
The @DEPLOYY block
At the very top of your script, add a normal
PowerShell comment block
<# ... #> containing
@DEPLOYY. Give it a friendly name, a
description, and a list of inputs that map to your
script's parameters.
<#
@DEPLOYY
Name: Reset User Password
Description: Resets a user's password and notifies them. Wraps onto
indented lines if you need more room.
Inputs:
- User Name: string($SamAccountName, required) =
- Require Change At Logon: bool($ChangeAtLogon) = true
- Notify Method: choice[Email|SMS|None]($NotifyMethod) = Email
#>
param(
[string] $SamAccountName,
[bool] $ChangeAtLogon = $true,
[string] $NotifyMethod = "Email"
)
That block produces a form with a required text box,
a checked checkbox, and a dropdown, then passes each
value straight into the matching
param() entry.
The pieces
- Name is the title shown in the app. If you leave it out, the file name is used.
- Description is the helper text under the title. It can run onto indented lines.
- Inputs: begins the list. Each input is one line starting with a dash.
Anatomy of an input line
Each input follows the same shape:
- Label shown to the user: type($ParameterName, required) = default
- Label is whatever you want the person to see.
- type is one of the four listed below.
-
($ParameterName) is the actual
script parameter the value is passed to. Match
it to your
param()block. - , required is optional. Add it to make the field mandatory.
- = default is optional. Put a starting value after the equals sign, or leave it blank for none.
Input types
| Type | Shows as | Example line |
|---|---|---|
string |
Text box |
- Server Name: string($Server,
required) =
|
int |
Number box |
- Timeout (seconds):
int($TimeoutSeconds) = 30
|
bool |
Checkbox |
- Restart After: bool($Restart) =
true
|
choice |
Dropdown |
- Notify Method:
choice[Email|SMS|None]($Notify) =
Email
|
Tip
For a choice, list the options in
square brackets separated by |. The
first option is used as the default unless you
set one after the equals sign.
For admins & IT
You can hand your team a copy of Deployy Desk that
opens already pointed at the right script folders,
with no per-person setup. You do that with a small
file called defaults.json.
When a person opens Deployy Desk for the first time
(or before they've saved any settings of their own),
the app looks for defaults.json in two
places, in order:
- Next to the app's executable, in the install folder.
-
C:\ProgramData\Deployy Desk\defaults.json, the better target for pushing settings to everyone by GPO or your management tool.
A person's own saved settings always win over
defaults, so this seeds the first run without
locking anyone in. Each user's settings live in
%APPDATA%\Deployy Desk, never in the
install folder, so a standard (non-admin) user can
use the app normally.
defaults.json
A complete example:
{
"ScriptLocations": [
{ "Name": "IT Ops", "Path": "\\\\fileserver\\IT\\Scripts" },
{ "Name": "Helpdesk", "Path": "\\\\fileserver\\Helpdesk\\Scripts" },
{ "Name": "Security", "Path": "\\\\fileserver\\Security\\Scripts" },
{ "Name": "My Scripts", "Path": "%USERPROFILE%\\Documents\\Deployy Desk\\Scripts" }
],
"ClearConsoleBeforeRun": true,
"TelemetryEnabled": true
}
| Setting | What it does |
|---|---|
ScriptLocations |
The folders the app shows on first run.
Each has a friendly
Name and a
Path. Paths can be local
folders, UNC network shares
(\\server\share), or use
environment variables like
%USERPROFILE%.
|
ClearConsoleBeforeRun |
Whether the console clears each time a
script runs. true or
false.
|
TelemetryEnabled |
Set to false to turn the
anonymous startup ping off for everyone.
This admin setting overrides the
per-user toggle. See
Privacy.
|
Why all the backslashes?
This is a JSON file, and JSON treats
\ as a special character, so every
backslash in a path has to be doubled. The path
itself is normal: a share really is
\\fileserver\IT\Scripts. You just
type each backslash twice when you put it in the
file.
| The real path | What you type in defaults.json |
|---|---|
\\fileserver\IT\Scripts
|
"\\\\fileserver\\IT\\Scripts"
|
C:\Scripts\Ops |
"C:\\Scripts\\Ops" |
Windows warnings on first launch
Deployy Desk isn't code-signed yet, so on some machines Windows may show a SmartScreen prompt the first time you run the installer. This is normal for new independent software and does not mean anything is wrong.
- If you see "Windows protected your PC," click More info, then Run anyway.
- On a small number of new Windows 11 PCs with Smart App Control turned on, the app may be blocked with no "Run anyway." That feature is off on most managed and upgraded machines. If you hit it, install on a machine without Smart App Control, or ask your administrator.
Privacy
When Deployy Desk starts, it sends one small,
anonymous ping so I can see roughly how many people
use the app and let you know when a new version is
out: a random ID, the app version, and your
operating system. Nothing else. It never sees your
name, your scripts, or what they do. Turn it off
anytime in the app's settings, or set
"TelemetryEnabled": false in
defaults.json to turn it off for
everyone. Questions?
hello@deployy.io.