我正在運行wsl -l -v以獲取計算機上的 WSL VM 串列,并且得到如下串列:
NAME STATE VERSION
Ubuntu-18-04 Stopped 2
Ubuntu-20-04 Running 2
我只想看到正在運行的那些。
我試過了:
wsl -l -v | Select-Object NAME
但我只是得到一個空行串列。
uj5u.com熱心網友回復:
剛剛在 --help docs 中找到了這個
wsl -l --running
輸出:
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
uj5u.com熱心網友回復:
雖然您的特定用例可以由wsl --list --running(如@X- -FARZA_D- -X's answer所述)處理,但您的過濾器無法正常作業有兩個原因:
首先,您可能正在尋找Select-String Running. PowerShellSelect-Object需要具有屬性的 PowerShell物件NAME。所有wsl.exe提供的是字串輸出。
但更重要的是,即使在正確之后它仍然無法作業:
wsl -l -v | Select-String Running
這是由于一個錯誤wsl.exe導致其輸出為損壞的 UTF-16。有關詳細資訊,請參閱此和此答案。
鑒于您的用例,您應該能夠正確過濾:
$console = ([console]::OutputEncoding)
[console]::OutputEncoding = New-Object System.Text.UnicodeEncoding
wsl -l -v | Select-String Running
[console]::OutputEncoding = $console
或者,如果您在 Windows 11 上使用最新版本的 WSL(0.64.0 或更高版本),您可以簡單地:
$env:WSL_UTF8=1
wsl -l -v | Select-String Running
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/532928.html
標籤:电源外壳windows-subsystem-for-linux
