Deployy Desk Help

Using Deployy Desk, and setting it up for your team.

Deployy Desk turns your PowerShell scripts into clean, clickable forms. This page covers the two things worth knowing: how to make a script show up as a form, and how an admin can set the app up for everyone at once.

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 comment 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 comment 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, and 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 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

TypeShows asExample 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:

  1. Next to the app's executable, in the install folder.
  2. C:\ProgramData\Deployy Desk\defaults.json — the better target for pushing settings machine-wide 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
}
SettingWhat 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 pathWhat 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 we 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.