Out-of-Process 스타일로 만든 COM 서버를 이용하여 WSL API를 자유롭게 부를 수 있도록 만들었습니다.
적절한 Wrapper를 추가하기만 하면 Windows PowerShell에서도 WSL API를 CoInitializeSecurity API를 어떻게 불렀는지에 무관하게 편하게 쓸 수 있는 것이 이 모듈의 특징입니다.
좀 더 가다듬어서 첫 릴리스를 만들고, 이 COM SDK를 토대로 Python, Java, Golang용 SDK도 다시 시작해봐야 할 것 같습니다.
샘플 코드:
$obj = New-Object -ComObject 'WslSdk.WslService'
Write-Output 'A WslSdk.WslService object is created'
# Distro Register Check
$distroName = 'Ubuntu-20.04'
Write-Output $obj.IsDistroRegistered($distroName)
# Metadata Query
$o = $obj.GetDefaultDistro()
Write-Output "Distro ID: $($o.DistroId())"
Write-Output "Distro Name: $($o.DistroName())"
$list = $obj.GetDistroList()
Write-Output $list
# Run WSL command
$res = $obj.RunWslCommand($o.DistroName(), "cat /etc/os-release")
Write-Output $res
$obj = $null