PowerShell module to manage in the most complete ways Windows Subsystem for Linux via PowerShells.
Set-PSResourceRepository -Name PSGallery -Trusted
Install-PsResource -Name PowerShellWSL -Scope CurrentUser
Import-Module PowerShellWSLGet-WslStatus: Shows WSL platform status and version details.Get-WslDistribution: Lists installed distributions and supports filtering by status/default/name pattern.Find-WslDistribution: Lists installable distributions fromwsl --list --online.Install-WslDistribution: Installs a distribution from Store or local source.Unregister-WslDistribution: Unregisters one or more distributions.Start-WslDistribution(aliasStart-Wsl): Starts a specific distribution.Stop-WslDistribution: Stops a specific distribution.Stop-Wsl: Shuts down the full WSL service (wsl --shutdown).Set-Wsl: Placeholder for future defaults management (currently warns that it is not implemented).
Invoke-WslCommand: Runs commands inside WSL with optional distro/user/shell controls.Get-WslConfig: Reads global.wslconfigor distro/etc/wsl.conf.ConvertTo-WslPath: Converts Windows paths to WSL paths.ConvertTo-WindowsPath: Converts WSL paths to Windows paths.
Export-WslVhdToFile: Exports a distribution to archive/image formats.Import-WslVhdFromFile: Imports/registers a distribution from VHD or tar.Get-WslVirtualDrivePaths: Returns WSL and/or Docker VHD paths.Optimize-WslVirtualDrives: Optimizes WSL/Docker virtual drives to reclaim space.Add-WslLocalDisk: Mounts local disks/VHDs into WSL.Remove-WslLocalDisk: Unmounts local disks from WSL.
Note: many management/action cmdlets return no pipeline objects on success.
To see progress/success messages, use -InformationAction Continue.
Get-WslStatusMainDistro : Ubuntu (v2 Stopped)
Kernel : 6.6.114.1
WSL : 2.7.3.0
WSLg : 1.0.73.0
MSRDC : 1.2.6676.0
Direct3D : 1.611.1.0
DXCore : 10.0.26100.1
Windows : 10.0.26200.8737
Get-WslDistributionDistribution Version IsDefault Status VHDFile
------------ ------- --------- ------ --------
Ubuntu 2 True Stopped C:\...\ext4.vhdx
docker-desktop 2 False Stopped C:\Docker\...\ext4.vhdx
archlinux 2 False Stopped C:\Docker\...\ext4.vhdx
Get-WslDistribution -DefaultDistribution Version IsDefault Status VHDFile
------------ ------- --------- ------ --------
Ubuntu 2 True Stopped C:\wsl\...\ext4.vhdx
Get-WslDistribution -Distribution "Ubuntu*"Distribution Version IsDefault Status VHDFile
------------ ------- --------- ------ --------
Ubuntu 2 True Stopped C:\...\ext4.vhdx
Get-WslDistribution -Status Running
Find-WslDistribution -Distribution "Ubuntu*"Distribution FriendlyName IsInstalled
------------ ------------ -----------
Ubuntu Ubuntu True
Ubuntu-26.04 Ubuntu 26.04 LTS False
Ubuntu-24.04 Ubuntu 24.04 LTS False
Ubuntu-22.04 Ubuntu 22.04 LTS False
Install a distribution from the online catalog:
Install-WslDistribution -Distribution "Ubuntu" -InformationAction ContinueInstall a distribution from a local tar file:
Install-WslDistribution -FromFile "D:\Backups\ubuntu.tar" -Name "Ubuntu-Dev" -Location "D:\WSL\Ubuntu-Dev" -InformationAction ContinueUnregister a distribution:
Unregister-WslDistribution -Distribution "Ubuntu-Dev" -InformationAction ContinueStart installed distributions:
Start-WslDistribution -Distribution "Ubuntu" -InformationAction Continueor
Start-Wsl -Distribution "Ubuntu" -InformationAction ContinueStop a running distribution:
Stop-WslDistribution -Distribution "Ubuntu" -InformationAction ContinueShutdown the full WSL service:
Stop-Wsl -InformationAction ContinueInvoke-WslCommand -Distribution "Ubuntu" -Command "uname -a"Linux MSI 6.6.114.1-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Mon Dec 1 20:46:23 UTC 2025 x86_64 GNU/Linux
Get-WslDistribution -Default | Invoke-WslCommand -Command "whoami"spart
Get Host .wslconfig values:
Get-WslConfigGet a specific distribution's /etc/wsl.conf values:
Get-WslConfig -Distribution "Ubuntu"Property Value
--------- -----
boot.systemd true
user.default spart
Get item from WSL path:
# Get items
Get-WslItem -Path /home/spart
Get-WslChildItem -Path /home/apart
# Remove items
Remove-WslItem -Path /home/spart/my-file.txt
# Add items
Add-WslItem -ItemType Directory -Path /my-dirExport-WslVhdToFile -Distribution "Ubuntu" -Destination "D:\Backups\Ubuntu-20260704.tar" -InformationAction ContinueExport-WslVhdToFile -Distribution "Ubuntu" -Destination "D:\Backups\Ubuntu.vhdx" -FormatAs vhdx -InformationAction ContinueNot executed in this verification pass (mutating command).
Import-WslVhdFromFile -Distribution "Ubuntu-Restore" -InstallLocation "D:\WSL\Ubuntu-Restore" -VhdPath "D:\Backups\Ubuntu.vhdx" -InformationAction ContinueGet-WslVirtualDrivePaths -WslDockerVHDPaths
--------------
{C:\Users\spart\AppData\Local\Docker\wsl\disk\docker_data.vhdx, C:\Users\spart\AppData\Local\Docker\wsl\disk\docker_image.vhdx}
Get-WslVirtualDrivePaths -DockerDockerVHDPaths
--------------
{C:\Users\spart\AppData\Local\Docker\wsl\disk\docker_data.vhdx, C:\Users\spart\AppData\Local\Docker\wsl\disk\docker_image.vhdx}
Optimize-WslVirtualDrives -Wsl -InformationAction ContinueOptimize-WslVirtualDrives -Docker -InformationAction ContinueAdd-WslLocalDisk -Disk "\\.\PHYSICALDRIVE3" -FsType ext4 -InformationAction ContinueAdd-WslLocalDisk -Disk "D:\Disks\data.vhdx" -Vhd -FsType ext4 -InformationAction ContinueRemove-WslLocalDisk -Disk "\\.\PHYSICALDRIVE3" -InformationAction Continue- Use
Get-Help <CommandName> -Detailedfor full parameter documentation. - Commands that accept
-Distributionsupport property-name pipeline binding where applicable. - For release/tag automation, see local hooks and CI workflows in
.githooksand.github/workflows.
If this project helps you, star the repository or support the author: