为什么 PowerShell 中的 WSL2 导入命令输出“访问被拒绝”?

在 Windows 10 Pro 和 11 Pro 上,我安装并激活了 Ubuntu-20.04 和 Debian。使用 MS 提供的关于将这些发行版切换到辅助驱动器的文档,一切似乎都运行良好。直到 WSL 导入命令。它输出“访问被拒绝”。我尝试过 Windows Terminal、PowerShell,甚至是 WebStorm;我得到相同的输出。

我以提升的权限运行,但无济于事。导出工作正常,我使用不同的名称作为源文件,以确保将名称恢复为其原始名称。 wsl.conf 编辑看起来不错,一切都排好……直到导入命令。

我很茫然。我已经用尽了所有的研究。谁能帮我解决这个问题,以便我可以从我的 F: 驱动器运行这些?

干杯,

注册护士

stack overflow Why does the WSL2 import command in PowerShell output "Access is denied"?
原文答案

答案:

作者头像

你只需要在最后加上一个文件名,比如:

wsl --export Ubuntu C:UsersDesktopOneDriveDocumentsubuntu.tar
作者头像

假设您要导入导出的发行版“ubuntu.tar”。

在 PowerShell 中执行 wsl --import 命令(以标准用户身份运行)之前,尝试在 .tar 文件的位置执行 cd,例如:

PS X:> cd D:
PS D:> wsl --import Ubuntu_copy .Ubuntu_copy ubuntu.tar

使用绝对路径执行 wsl --import 命令对我不起作用,但上述方法可以。

作者头像

万一这对任何人来说都是一个持续的问题,您不仅需要从管理员帐户运行 wsl --import ,还需要运行 Powershell/cmd as Administrator ,例如通过右键单击 pwsh.exe 图标/快捷方式并单击“以管理员身份运行”。如果您以标准用户身份运行并“以管理员身份运行”,则导入将安装发行版 for the admin user you've chosen to run as

完整的语法是:

wsl --import <Distro name> <Install folder> <Source .tar file>
作者头像

wsl -h

导入语法如下,请注意安装目录和导入的 tar 文件的参数顺序:

--import <Distro> <InstallLocation> <FileName> [Options]                                                            
    Imports the specified tar file as a new distribution.                                                                   
    The filename can be - for standard input.                                                                                                                                                                                                       
    Options:                                                                                                                    
    --version <Version>                                                                                                         
        Specifies the version to use for the new distribution.