PowerShell script to move WSL 1 and WSL 2 distros VHDX file to a different location.
- ✅ Supports both WSL 1 and WSL 2
- ✅ Interactive and CLI modes
- ✅ Automatic WSL shutdown to prevent file locks
- ✅ Preserves default distro setting
- ✅ Pre-checks for NTFS compression (prevents corruption)
- ✅ Colored output with progress feedback
./move-wsl.ps1- Select your distro from the list
- Enter your target path (e.g.,
D:\wsl\ubuntu) - Confirm the operation
# Basic usage
./move-wsl.ps1 -Distro "Ubuntu" -Target "D:\wsl\ubuntu"
# Force mode (skip confirmations)
./move-wsl.ps1 -Distro "Ubuntu" -Target "D:\wsl\ubuntu" -Force
# Skip WSL shutdown (not recommended)
./move-wsl.ps1 -Distro "Ubuntu" -Target "D:\wsl\ubuntu" -NoShutdown| Parameter | Description |
|---|---|
-Distro |
Name of the WSL distro to move |
-Target |
Destination folder path |
-Force |
Skip confirmation prompts and NTFS compression warning |
-NoShutdown |
Skip automatic WSL shutdown (not recommended) |
Warning
This script uses official
wslcommands and was used by many people. Make sure you have a backup of your data before proceeding.
- Backup important data in your WSL distro
- Close all applications using WSL
- Stop Docker Desktop if moving Docker WSL distros
The script will check if the target folder has NTFS compression enabled. Compressed folders can corrupt WSL images. If detected, disable compression:
- Right-click the target folder
- Properties → Advanced
- Uncheck "Compress contents to save disk space"
Set your default user inside your distro by adding the following configuration to your /etc/wsl.conf:
[user]
default=YOUR_USERNAMEIf the file doesn't exist, create it manually. Then exit your distro, terminate it (wsl -t YOUR_DISTRO) and start it again.
Some distributions also allow setting the default user via command line:
ubuntu config --default-user johndoeThe script now automatically preserves the default distro setting (v1.4.0+). If using an older version:
wsl -s YOUR_DISTRORun this command to allow the script:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
./move-wsl.ps1On import, the distro will be registered with its original WSL version. If it changed:
wsl --set-version <Distro> <Version>Before moving Docker WSL, make sure to:
- Stop Docker Desktop completely
- Wait a few seconds for processes to terminate
- Run the script
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
