A Comprehensive PowerShell Tool for Simple Automated Game Server Management.
- Hassle-free "setup and forget" experience
- Automated installation of game servers
- Streamlined single-file configuration
- Automatic server updates upon new version releases
- Monitoring for detecting server crashes and available updates
- Built-in thread isolation and priority management
- Automatic start after a system reboot
- Daily server restarts with in-game broadcasts for supported games
- Automated, lightweight backups with archiving for 7 days and 4 weeks
- Full configurability, allowing customization according to your preferences
- Open-Source with a great community supporting the tool.
- 7 Days to Die
- Ark: Survival Ascended
- Astroneer
- Conan Exiles
- Enshrouded
- Icarus
- Insurgency Sandstorm
- Killing Floor 2
- Left 4 Dead 2
- Mordhau
- Minecraft (Paperclip)
- Necesse
- Palworld
- PixArk
- Project Zomboid
- Rust
- Satisfactory
- Squad
- Starbound
- Stationeers
- Terraria
- The Forest
- Valheim
- Valheim Plus
- V Rising
- Faster than the other available tools
- Lighter and more targeted backups
- Modular
- Expandable
- Customizable
Before you begin, note that this tool is not intended to run on your primary gaming computer. Ideally, use a virtual machine on a dedicated server or a secondary computer. If you still want to use this tool on your main computer, you should consider disabling the monitoring features. Otherwise, the Task Scheduler will briefly open a cmd window for a tenth of a second every 5 minutes. You can disable this by turning off the monitoring features (AutoUpdates, AutoRestartOnCrash, AutoRestart) in the game server configuration file or by disabling the game server monitoring task created in the Windows Task Scheduler after the second launch of the server.
- Install Git and your preferred IDE, such as VSCode.
- Ensure that your File Explorer is set to display file extensions.
- Clone this repository using Git (F1 then Git:Clone in VSCode) or extract the zip file anywhere. (Preferably C:, but any directory will work unless the path is too long)
- Copy the desired server configuration file from the
templatesfolder to theconfigsfolder.- Example: Copy
icarus.psm1fromtemplatestoconfigs.
- Example: Copy
- Edit the copied configuration file to customize your server settings.
- Copy and rename
launchers/run.cmdto match your server configuration file.- Example: Rename
run.cmdtoicarus.cmdto starticarus.psm1. - The filename in
launchersmust match the one inconfigs.
- Example: Rename
- Launch your server by double-clicking on your
icarus.cmdfile from thelaunchersfolder. - The PowerShell window will open, install the server, and stop the server to allow you to edit the server configuration files.
- After editing your config files, run the
icarus.cmdfile fromlaunchersagain. - On the second launch, it will start the server and configure the scheduled task to keep the server running and updated.
- To disable a server, use the Windows Task Scheduler application to disable or delete the corresponding Scheduled Task.
- Forward the server ports in your router and configure the Windows firewall. You can also disable the Windows firewall entirely, but ensure that you still forward the ports in your router.
Tool-wide settings live in defaults.psm1. Do not edit it: it is part of
PowerShellGSM and is overwritten by updates. To change a setting, copy
override.example.psm1 to override.psm1 and keep only the settings you want
to change. override.psm1 is not tracked by git, so updates never touch it.
Upgrading from a version with global.psm1: move your changes to
override.psm1. global.psm1 is no longer used.
When AutoUpdateTool is $true (the default), PowerShellGSM registers a
PowerShellGSM-Update scheduled task that runs update.ps1 every
ToolUpdateFrequency hours (24 by default). It resets the installation to the
latest upstream version, overwriting any local change to PowerShellGSM's own
files. Your configs, launchers, servers, backups, logs and override.psm1 are
not tracked by git and are kept. This requires an installation cloned with Git.
Set AutoUpdateTool to $false to remove the task on the next run.
Both are off by default. After changing one, delete the Tasks-* and
PowerShellGSM-Update tasks in the Task Scheduler; they are registered again
on the next run.
TaskHeadless: start the tasks throughconhost.exe --headless, so no console window flashes every few minutes.TaskRunWhileLoggedOff: run the tasks whether the user is logged on or not (S4U logon, no password stored), so the servers start after a reboot without auto-logon. Servers then run in the background with no window, and the tasks cannot reach network shares. Some servers need a logged-on desktop and will not work this way.
By default, the first launch of a new server installs it, starts it once so it
generates its files, then stops and waits so you can edit them. Set
StopAfterFreshInstall to $false for unattended installs (for example from a
provisioning tool): PowerShellGSM then restarts the server once after its first
install, so the configuration from the server's config file is applied to the
files the server just generated, and the server keeps running.
- A Windows machine with at least PowerShell 5.1 (Windows 10 or Server 2016+)
- Some basic PowerShell knowledge.
- Some networking basics to configure port forwarding.
- The Windows user running the script should have admin privileges but should not run it with admin privileges.
- DirectX End-User Runtime
- Microsoft Visual C++ Redistributable
- .NET Framework 4.8.1
- .NET Framework 5, 6, 7, or 8
- Java JDK
- Microsoft XNA Redistributable
Install-Module -Name 7Zip4PowershellYou can create pull requests for changes to this project.
Please follow the current structure and formatting.
If you want to add support for more games, copy one of the configuration files and edit the values and launch parameters. You can then create a pull request to include your configuration here.
I am in no way responsible for anything that this script will do; you are responsible for reading and understanding what this script will do before executing it.
This script will download and install third-party software like SteamCMD, ARRCON, mcrcon, Java, Microsoft XNA, Paperclip, Terraria, and any games you try to install.
