[Windows] Set WSLv1 version on Windows Server 2022 (#5762)

* Set WSLv1 version on Windows Server 2022

* Create path if missing
This commit is contained in:
Aleksandr Chebotov
2022-06-17 09:24:02 +02:00
committed by GitHub
parent a58f12fe95
commit e42b607790
3 changed files with 28 additions and 1 deletions

View File

@@ -17,6 +17,7 @@ Export-ModuleMember -Function @(
'Set-DefaultPath' 'Set-DefaultPath'
'Add-MachinePathItem' 'Add-MachinePathItem'
'Add-DefaultPathItem' 'Add-DefaultPathItem'
'Add-DefaultItem'
'Get-SystemVariable' 'Get-SystemVariable'
'Get-DefaultVariable' 'Get-DefaultVariable'
'Set-SystemVariable' 'Set-SystemVariable'

View File

@@ -75,7 +75,7 @@ function Set-DefaultVariable {
$key = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey($Name, $Writable) $key = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey($Name, $Writable)
$key.SetValue($DefaultVariable, $Value, $Kind) $key.SetValue($DefaultVariable, $Value, $Kind)
Get-DefaultVariable $DefaultVariable Get-DefaultVariable -DefaultVariable $DefaultVariable -Name $Name
$key.Handle.Close() $key.Handle.Close()
[System.GC]::Collect() [System.GC]::Collect()
} }
@@ -135,6 +135,25 @@ function Add-DefaultPathItem {
Disconnect-Hive Disconnect-Hive
} }
function Add-DefaultItem {
param(
[string]$DefaultVariable,
[string]$Value,
[string]$Name = "DEFAULT\Environment",
[string]$Kind = "ExpandString",
[bool]$Writable = $true
)
Connect-Hive
$regPath = Join-Path "HKLM:\" $Name
if (-not (Test-Path $Name)) {
Write-Host "Creating $regPath key"
New-Item -Path $regPath -Force | Out-Null
}
Set-DefaultVariable -DefaultVariable $DefaultVariable -Value $Value -Name $Name -Kind $Kind -Writable $Writable
Disconnect-Hive
}
function New-ItemPath { function New-ItemPath {
param ( param (
[string]$Path [string]$Path

View File

@@ -6,6 +6,13 @@
Write-Host "Cleanup WinSxS" Write-Host "Cleanup WinSxS"
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
# Sets the default install version to v1 for new distributions
# https://github.com/actions/virtual-environments/issues/5760
if (Test-IsWin22) {
Write-Host "Sets the default install version to v1 for new distributions"
Add-DefaultItem -DefaultVariable "DefaultVersion" -Value 1 -Name "DEFAULT\Software\Microsoft\Windows\CurrentVersion\Lxss" -Kind "DWord"
}
Write-Host "Clean up various directories" Write-Host "Clean up various directories"
@( @(
"$env:SystemDrive\Recovery", "$env:SystemDrive\Recovery",