wsl使用powershell管道求助

想在wsl中调用wsl.exe来执行在更新其他wsl distribution的命令,但是从wsl.exe返回的结果形式好像不太对劲?

我目前的脚本雏形:

#!/usr/bin/env bash

for dist in $(wsl.exe --list --quiet)
do
    echo "Testing for ${dist}"
    wsl.exe --distribution ${dist} -- pwd
done

执行结果:

./zzz.sh: line 3: warning: command substitution: ignored null byte in input
Testing for Arch
不存在具有提供的名称的分布。
Testing for Ubuntu-20.04
不存在具有提供的名称的分布。
Testing for Debian
不存在具有提供的名称的分布。

我的怀疑对象是wsl.exe的返回值,使用wsl.exe --list --quiet | cat -e,会得到

A^@r^@c^@h^@^M^@$
^@U^@b^@u^@n^@t^@u^@-^@2^@0^@.^@0^@4^@^M^@$
^@D^@e^@b^@i^@a^@n^@^M^@$
^@%

应该是这些^@ ^M $ %导致的问题,但接下来该怎么解决呢?

试试这个方法?