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 -ge 1000</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>Image</Name>
                <GetScriptBlock>Get-WslImage -Id $this.ImageGuid</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>DistributionName</Name>
                <GetScriptBlock>"$($this.Distribution):$($this.Release)"</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>FileName</Name>
                <GetScriptBlock>$this.LocalFileName</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>File</Name>
                <GetScriptBlock>[System.IO.FileInfo]::new([System.IO.Path]::Combine([WslImage]::BasePath, $this.LocalFileName))</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>IsAvailableLocally</Name>
                <GetScriptBlock>$this.File.Exists</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>Length</Name>
                <GetScriptBlock>$this.GetFileSize()</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>OnlineHash</Name>
                <GetScriptBlock>if ($this.Source) { $this.Source.Digest } else { $this.Digest }</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>Outdated</Name>
                <!-- Enums don't propagate. 2 is Outdated-->
                <GetScriptBlock>(!$this.IsLocalOnly -and $this.State -eq 2)</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>IsCached</Name>
                <GetScriptBlock>$this.Id -ne [Guid]::Empty</GetScriptBlock>
            </ScriptProperty>
            <AliasProperty>
                <Name>Digest</Name>
                <ReferencedMemberName>FileHash</ReferencedMemberName>
            </AliasProperty>
            <AliasProperty>
                <Name>OnlineDigest</Name>
                <ReferencedMemberName>OnlineHash</ReferencedMemberName>
            </AliasProperty>
            <AliasProperty>
                <Name>Os</Name>
                <ReferencedMemberName>Distribution</ReferencedMemberName>
            </AliasProperty>
            <AliasProperty>
                <Name>OsName</Name>
                <ReferencedMemberName>DistributionName</ReferencedMemberName>
            </AliasProperty>
        </Members>
    </Type>
    <Type>
        <Name>WslImageSource</Name>
        <Members>
            <ScriptProperty>
                <Name>FullName</Name>
                <GetScriptBlock>"$($this.Distribution):$($this.Release)"</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>FileName</Name>
                <GetScriptBlock>$this.LocalFileName</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>File</Name>
                <GetScriptBlock>[System.IO.FileInfo]::new([System.IO.Path]::Combine([WslImage]::BasePath, $this.LocalFileName))</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>Length</Name>
                <GetScriptBlock>$this.GetFileSize()</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>IsCached</Name>
                <GetScriptBlock>$this.Id -ne [Guid]::Empty</GetScriptBlock>
            </ScriptProperty>
        </Members>
    </Type>
</Types>