今天,我只是想检查Windows工作站上是否安装了特定的子系统。
因此,我正在使用Windows Linux子系统(WSL),并安装Microsoft Store提供的Ubuntu。
现在,我正在尝试一种方法来检查它是否以编程方式安装。
,我得到以下输出:
PS C:\> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
而且我需要知道是否安装了“Ubuntu-20.04”。我已经尝试了很多东西,但是没有什么比这更有趣:
$state = wsl -l -v
if($state -like '*Ubuntu*') {
Write-Host 'Installed'
} else {
Write-Host 'Nope'
}
但是没有用。你有我的头绪吗?
感谢大家 !
最佳答案
这似乎是一个编码问题。字符串中有(不可见)空字符。我仍在尝试找出处理它的最佳方法。
同时...这里有一个快速修复:
$state = (wsl -l -v) -replace "\x00",""
更新另一个解决方法,但这将更改整个 session 的编码:
[System.Console]::OutputEncoding = [System.Text.Encoding]::Unicode
关于powershell - Powershell-奇怪的WSL输出字符串编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64104790/