今天,我只想看看是否在我的windows工作站上安装了一个特定的子系统。因此,我使用(WSL)并安装Microsoft提供的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'
}但不起作用。你有线索给我吗?谢谢大家!
发布于 2020-09-28 15:21:29
这似乎是一个编码问题。字符串中有(不可见的)空字符。我还在努力找出处理这件事的最佳方法。
同时..。下面是一个快速解决方案:
$state = (wsl -l -v) -replace "\x00",""更新
另一个解决方法,但这将更改整个会话的编码:
[System.Console]::OutputEncoding = [System.Text.Encoding]::Unicode发布于 2021-01-25 21:12:40
如果您从WSL本身或Windows运行wsl,您可以使用它来转换:
wsl -l -v | iconv -f UTF-16LE -t UTF-8https://stackoverflow.com/questions/64104790
复制相似问题