The author's "halves my workload" claim is a personal estimate. No script, timings or screenshots were published, so treat it as one admin's experience and not a benchmark.
What the author built
The author manages two home servers over SSH from a Windows 11 PC. Before doing real work, they kept retyping the same checks: are the hosted tools up, does the machine have internet access, and have any errors appeared recently?
The fix is a script file wired into the profile. According to the account, the dashboard works in stages:
- Local PC: It shows the host's version and uptime.
- Connectivity: It tests internet access and DNS resolution. SSH can work on a LAN with no internet, so the author checks these separately.
- Applications: It lists the apps and their expected URLs.
- Each server over SSH: It reports system details, Docker container and service status, temperature, bind mounts, available updates, inactive services, Tailscale device activity and recent errors.
- Shortcut commands: Instead of aliases, the script defines small functions such as
ssh113andssh110. These connect straight to each server.
The author says an inactive Kopia container showed up as present but not running, which fits a server being cleared to make room for Immich. They also broke a container on purpose. The dashboard flagged a config-file problem and suggested follow-up commands.
Why a profile instead of a web dashboard
The author has tried Homarr, Glance, Beszel and Glances. Their complaint is that these tools mostly control Docker and can't manage the host OS, so SSH is still needed. A dashboard hosted on a server can also go dark when that server is down.
A profile runs on the user's own PC, so an unreachable server shows up as a connection error and not as a missing page. That is the author's view and not a tested comparison of those products. The two approaches also serve different purposes. A web dashboard is better for a quick look from a phone or another machine. A profile-driven check suits someone who is already in a terminal.
How to build the same thing
These steps follow Microsoft's PowerShell documentation.
- Create the profile. PowerShell doesn't make one for you. Microsoft's documented command is
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }. The-Forceswitch also creates any missing folders. - Know which profile you're editing. By default, referencing the $PROFILE variable returns the path to the "Current User, Current Host" profile. There are four scopes in total, covering all users or the current user, and all hosts or the current host. Microsoft's Windows example for the current user and host is
C:\Users\username\Documents\PowerShell\Microsoft.PowerShell_profile.ps1. The VS Code terminal uses a different file name,Microsoft.VSCode_profile.ps1. A dashboard in the console profile won't appear in VS Code. - Edit it. Run
code $PROFILE, or use Notepad. - Check the execution policy. Microsoft's note says the execution policy needs to be set to RemoteSigned at a minimum to run scripts on Windows. Don't loosen the policy more than your environment requires.
- Set up SSH keys. Windows includes an OpenSSH client. Microsoft's guidance says
ssh-keygengenerates the pair, and the public key goes to the target account'sauthorized_keysfile. On a Linux server that means the account's~/.sshfolder. Microsoft'sadministrators_authorized_keysinstructions apply only to Windows servers running OpenSSH. - Test in a fresh session. A profile only runs at startup, so open a new terminal after each change.
Key caveats
"Password-less" depends on your key setup
Microsoft recommends against an empty passphrase, since the passphrase works with the key file to provide two-factor authentication. That isn't a quote from the XDA article. It is Microsoft's key-management guidance. A passphrase-protected key can still prompt you at login unless ssh-agent holds it. Microsoft's documented flow is to set the ssh-agent service to start automatically, start it, and run ssh-add on the key. A profile that makes several SSH calls on every launch will be annoying if each one asks for a passphrase.
The private key is the real credential. Microsoft says it is equivalent to a password and should be protected the same way. Don't put passwords in profile code.
Startup cost
A profile that does a dozen network checks will slow every terminal launch, and it will complain whenever a server is off. One long-standing community tip is that profile scripts run every time you launch PowerShell, so they shouldn't take long. The usual fix is to put the dashboard in a function, for example one called Get-LabStatus, and call it from the profile only when you want it. You can also add a switch or environment variable to skip it.
If a profile breaks your session, start PowerShell with pwsh -NoProfile. Microsoft documents that switch for starting without any profiles.
Profiles don't follow you onto remote machines
Microsoft's documentation says PowerShell profiles aren't run automatically in remote sessions, so the functions they define won't exist there. That doesn't hurt this setup, because the checks run from the local PC and send commands out over SSH. It would matter if you expected ssh113 to be available after you log in to a server.
Microsoft also says a session opened with key-based authentication has no user credentials. It can't authenticate outbound as you. If you extend the checks to query a third system from a server, that "second hop" may fail even though your login worked.
Windows-specific limits
Microsoft's OpenSSH key documentation says key-based authentication works with local and Active Directory accounts. It doesn't work with Microsoft Entra ID accounts. That is irrelevant for Linux home servers. It matters if you try the same trick against Windows servers joined to Entra.
The author's next steps
The author says the profile currently works well for Linux servers. A WSL machine on a second Windows PC will need changes, and the dashboard also needs cosmetic work. That fits the usual pattern for hand-built tools: one person's setup, tuned to one network, and not something you can drop in elsewhere.
Verdict
The idea is sound. A profile that checks your own infrastructure when you sit down is a modest kind of automation, and it beats opening five browser tabs. The XDA account is a personal showcase and not a tested recipe, so the "halves my workload" figure is unverified. If you copy the idea, keep the startup light, protect your keys with a passphrase and ssh-agent, and keep -NoProfile in mind for the day a typo locks up your shell.
References
- My PowerShell profile runs a dozen small jobs every time I open a terminal, and halves my workload XDA · 2026-11-07T14:00:20+00:00
- Customizing your shell environment - PowerShell | Microsoft Learn learn.microsoft.com
- Windows Terminal SSH | Microsoft Learn learn.microsoft.com