我想知道我是否在运行特定的wsl发行版(Windows 10 Home,WSL 2):
PS C:\Users\User> wsl --list --running
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
MyDistro
PS C:\Users\User> wsl --list --running | Select-String -Pattern "MyDistro"
PS C:\Users\User>没有输出。我使用Get-Member来查看输出是一个字符串;如果我通过类似于| Out-String -stream的操作来运行它,就没有什么区别了。
我可以与Select-String .或Select-String .*进行匹配,但是它匹配所有的东西,这是没有帮助的。
是的,我想看看是否有一个具有特定名字的运行发行版。在PowerShell中有更好的方法来做到这一点吗?
发布于 2021-05-28 23:37:44
令人费解的是,wsl --list --running 产生了UTF-16LE编码("Unicode"-encoded)输出,而不是尊重控制台的代码页。
一种快速而肮脏的解决方法--假设所有运行的发行版只使用ASCII范围字符(这似乎很可能)--是使用以下方法:
(wsl --list --running) -replace "`0" | Select-String -Pattern MyDistro支持所有Unicode字符的适当解决方案需要更多的努力:
$prev = [Console]::OutputEncoding; [Console]::OutputEncoding = [System.Text.Encoding]::Unicode
wsl --list --running | Select-String -Pattern MyDistro
[Console]::OutputEncoding = $prevhttps://stackoverflow.com/questions/67746179
复制相似问题