From 0a414055c41b857373537f1cb4515c22e6cdcaa2 Mon Sep 17 00:00:00 2001 From: Ram Kishor <100423546+Starepinjore@users.noreply.github.com> Date: Wed, 22 Jul 2026 11:18:27 -0400 Subject: [PATCH] SilentLauncher - Created Document --- docs/apps/silentlauncher.md | 124 ++++++++++++++++++ .../icon.webp | Bin 0 -> 15586 bytes 2 files changed, 124 insertions(+) create mode 100644 docs/apps/silentlauncher.md create mode 100644 static/img/docs/b0b9f423-eee3-4148-b8a0-e99400c45698/icon.webp diff --git a/docs/apps/silentlauncher.md b/docs/apps/silentlauncher.md new file mode 100644 index 000000000..43603ac31 --- /dev/null +++ b/docs/apps/silentlauncher.md @@ -0,0 +1,124 @@ +--- +id: 'b0b9f423-eee3-4148-b8a0-e99400c45698' +slug: /b0b9f423-eee3-4148-b8a0-e99400c45698 +title: 'SilentLauncher' +title_meta: 'SilentLauncher' +keywords: ['silent-launcher', 'silent-script-launcher', 'ps1-launcher', 'cmd-launcher', 'script-launcher', 'scheduled-task', 'scheduled-task-script-launcher'] +description: 'SilentLauncher is a lightweight command-line tool for Windows designed to execute PowerShell and Batch scripts completely invisibly.' +tags: ['deployment', 'windows', 'application'] +draft: false +unlisted: false +last_update: + date: 2026-07-22 +--- + +
+
+ + Logo + + +

SilentLauncher

+ +

Execute PowerShell and CMD scripts silently from Task Scheduler without flashing a console window.

+
+ + +## About + +SilentLauncher is a lightweight command-line tool for Windows designed to execute PowerShell and Batch scripts completely invisibly. + +When you run a script using Windows Task Scheduler, the system often flashes a black console window on the screen for a fraction of a second, even if you configure the task to run hidden. Traditionally, IT teams used a VBScript (`wscript.exe`) wrapper to hide this window. However, modern Antivirus and EDR solutions frequently block VBScript from launching PowerShell due to security heuristics, and Microsoft is actively deprecating VBScript. + +SilentLauncher solves this problem. Built as a native Windows GUI application, it uses the Windows API `CREATE_NO_WINDOW` flag to launch your scripts. This guarantees zero window flashing and bypasses the security restrictions associated with legacy VBScript wrappers. + +### Features + +- 🚫 **Zero Window Flashing**: Compiled as a GUI subsystem app with native Windows API flags. +- 🛡️ **EDR/AV Friendly**: No VBScript, no PowerShell obfuscation, just a clean, signed binary. +- 🔄 **Accurate Exit Codes**: Passes the exact exit code of your script back to Task Scheduler or your RMM. +- 📝 **Built-in Logging**: Automatically logs execution details and rotates the log file at 2 MB. +- ⚡ **Zero Dependencies**: Compiles to a single native binary. No runtime required. + +### Built With + +- [Go](https://go.dev/) — the programming language used to build this lightweight, dependency-free utility. +- [golang.org/x/sys/windows](https://pkg.go.dev/golang.org/x/sys/windows) — for providing the native Windows API bindings (specifically `CREATE_NO_WINDOW`) that enable truly silent, flicker-free execution. +- [goversioninfo](https://github.com/josephspurrier/goversioninfo) — the tool used to embed version metadata and custom icons into the compiled Windows executable. + +## Prerequisites + +- Windows OS + +## Usage + +SilentLauncher is designed to be called from Task Scheduler, RMM scripts, or command-line automation. It accepts a `-script` parameter for the file path and automatically passes any remaining arguments directly to your target script. + +### Arguments + +| Name | Example | Description | +| ---------------- | ------------------------------ | ------------------------------------------------------------------------------------------------- | +| `-script` | `"C:\Scripts\MyScript.ps1"` | The absolute path to the PowerShell (`.ps1`) or Batch (`.cmd` / `.bat`) script you want to execute. | +| `[arguments]` | `-Config "C:\config.xml"` | Any arguments provided after the script path are passed directly and safely to the target script. | + +SilentLauncher automatically detects the file extension and uses the correct executor: + +- For `.ps1` files: Uses `powershell.exe` with `-NoProfile`, `-NonInteractive`, `-ExecutionPolicy Bypass`, and `-WindowStyle Hidden`. +- For `.cmd` or `.bat` files: Uses `cmd.exe /c`. + +### Examples + +**1. Run a PowerShell script silently (no parameters):** + +```console +SilentLauncher.exe -script "C:\ProgramData\Automation\Script.ps1" +``` + +**2. Run a PowerShell script with multiple parameter types (strings with spaces, booleans, integers):** + +```console +SilentLauncher.exe -script "C:\ProgramData\Automation\Deploy.ps1" -TargetServer "Server-01" -Port 443 -Force +``` + +**3. Run a Batch/CMD script silently with installer switches:** + +```console +SilentLauncher.exe -script "C:\ProgramData\Automation\Install.cmd" /quiet /norestart LOGFILE="C:\Logs\install.log" +``` + +**4. Run a script with complex, quoted arguments:** + +```console +SilentLauncher.exe -script "C:\ProgramData\Automation\Notify.ps1" -Message "System update required. Please save your work." -Priority High +``` + +## Logging + +Every run appends a line-by-line log of what happened to `SilentLauncher.log`. This file is created in the exact same directory as the `SilentLauncher.exe` executable. + +The log records: + +- Initialization and the current executing user. +- The exact arguments received by the launcher. +- The fully resolved execution command. +- The final exit code (success or failure). + +The log file is strictly capped at **2 MB**. Once it exceeds this size, the launcher automatically truncates it to prevent unbounded disk growth. + +## Running from Task Scheduler or an RMM + +To use SilentLauncher in Windows Task Scheduler, configure a new task with the following action: + +1. **Action:** Start a program +2. **Program/script:** `C:\Path\To\SilentLauncher.exe` +3. **Add arguments:** `-script "C:\Path\To\YourScript.ps1" -YourParam "Value"` + +*(Optional but recommended)*: In the Task Scheduler "General" tab, ensure "Run whether user is logged on or not" is selected, and check "Run with highest privileges" if your script requires Administrator rights. + +The executable will start, launch your script in the background without any UI, wait for it to finish, and then exit. The exit code returned to Task Scheduler will **exactly match** the exit code of your script, allowing your RMM or monitoring tools to accurately detect success or failure. + +## Changelog + +### 2026-07-22 + +- Initial version of the document diff --git a/static/img/docs/b0b9f423-eee3-4148-b8a0-e99400c45698/icon.webp b/static/img/docs/b0b9f423-eee3-4148-b8a0-e99400c45698/icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..e4013c76c3ee2078fcd2b97e784526676079cdab GIT binary patch literal 15586 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 g|GIwoQ-s?e;AH1LABqXH$YHJXC%~Xj*r!{& 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