-
Notifications
You must be signed in to change notification settings - Fork 1
/
Install-WSL.ps1
46 lines (38 loc) · 955 Bytes
/
Install-WSL.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
param (
[Parameter(Mandatory=$true, Position=0)]
[ValidateScript({
if(-Not (Test-Path $_)) {
throw "File does not exist"
}
return $true
})]
[System.IO.FileInfo]
$RootFsTar,
[String]
$Name,
[String]
$Target
)
$ErrorActionPreference = "Stop"
$DefaultName = ""
$ExtractDir = "."
if ($RootFsTar.Name.StartsWith('alpine-')) {
$DefaultName = 'Alpine'
} elseif ($RootFsTar.Name.StartsWith('fedora-')) {
$DefaultName = 'Fedora'
}
if ($Name.Length -eq 0) {
if ($DefaultName.Length -gt 0) {
$Name = $DefaultName
} else {
$Name = (Get-Culture).TextInfo.ToTitleCase($RootFsTar.Name.Split('-')[0])
}
}
if ($Target.Length -eq 0) {
$Target = "$(Get-Location)\$Name"
}
lxrunoffline.exe i -n $Name -f $RootFsTar -d "$Target" -v 2 -r "$ExtractDir"
if (-Not (Test-Path -LiteralPath "$Target\ext4.vhdx")) {
wsl --set-version $Name 2
rm -Re -Fo "$Target\temp"
}