Wsl-Manager.Types.ps1xml

<?xml version="1.0" encoding="utf-8" ?>
<Types>
    <Type>
        <Name>WslInstance</Name>
        <Members>
            <ScriptProperty>
                <Name>FileSystemPath</Name>
                <GetScriptBlock>"\\wsl$\$($this.Name)"</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>BlockFile</Name>
                <GetScriptBlock>$this.BasePath | Get-ChildItem -Filter ext4.vhdx | Select-Object -First 1</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>Length</Name>
                <GetScriptBlock>$this.BlockFile.Length</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>Configured</Name>
                <GetScriptBlock>$this.DefaultUid -eq 1000</GetScriptBlock>
            </ScriptProperty>
        </Members>
    </Type>
    <Type>
        <Name>WslImage</Name>
        <Members>
            <ScriptProperty>
                <Name>IsLocalOnly</Name>
                <GetScriptBlock>($null -eq $this.Url -or $this.Url.Scheme -eq 'file')</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>OsName</Name>
                <GetScriptBlock>"$($this.Os):$($this.Release)"</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>FileName</Name>
                <GetScriptBlock>$this.LocalFileName</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>File</Name>
                <GetScriptBlock>[FileInfo]::new([Path]::Combine([WslImage]::BasePath, $this.LocalFileName))</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>IsAvailableLocally</Name>
                <GetScriptBlock>$this.File.Exists</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>Length</Name>
                <GetScriptBlock>$this.File.Length</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>OnlineHash</Name>
                <GetScriptBlock>$this.GetHashSource().GetExpectedHash($this.Url)</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>Outdated</Name>
                <GetScriptBlock>!$this.IsLocalOnly -and $this.IsAvailableLocally -and ($this.FileHash -ne $this.OnlineHash)</GetScriptBlock>
            </ScriptProperty>
        </Members>
    </Type>
</Types>