首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配powershell中的wsl输出?

如何匹配powershell中的wsl输出?
EN

Stack Overflow用户
提问于 2021-05-28 22:46:09
回答 1查看 329关注 0票数 2

我想知道我是否在运行特定的wsl发行版(Windows 10 Home,WSL 2):

代码语言:javascript
复制
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中有更好的方法来做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2021-05-28 23:37:44

令人费解的是,wsl --list --running 产生了UTF-16LE编码("Unicode"-encoded)输出,而不是尊重控制台的代码页。

一种快速而肮脏的解决方法--假设所有运行的发行版只使用ASCII范围字符(这似乎很可能)--是使用以下方法:

代码语言:javascript
复制
(wsl --list --running) -replace "`0" | Select-String -Pattern MyDistro

支持所有Unicode字符的适当解决方案需要更多的努力:

代码语言:javascript
复制
$prev = [Console]::OutputEncoding; [Console]::OutputEncoding = [System.Text.Encoding]::Unicode
wsl --list --running | Select-String -Pattern MyDistro
[Console]::OutputEncoding = $prev
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67746179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档