我有一个在 Mac 上的 Parallels 之上运行的 Windows 虚拟机。
我想编写一个在 Mac 的 OS-X UNIX 类环境上运行的 python 脚本,它调用 Parallels 上的 Windows 应用程序。我试图确保代码在将其放入 python 之前从终端执行。
唯一的问题是执行后
prlctl exec myProgram.exe argument1>NUL </dev/null & MyFileThatIRun.txt
我收到以下错误:
zsh: permission denied: NUL
我尝试过 nul、NUL,我尝试过不使用 NUL 来运行。
我并不是真正 100% 理解 nul,我只是知道它让我更进一步。
有人知道如何修复 zsh: 权限被拒绝: NUL 吗?
我尝试了命令行的多种排列:
prlctl exec myProgram.exe --guest-os-type windows argument1> NUL </dev/null & MyFile
prlctl exec myProgram.exe --guest-os-type windows argument1> NUL </dev/null MyFile
prlctl exec myProgram.exe argument1> NUL </dev/null & MyFile
prlctl exec myProgram.exe argument1> NUL </dev/null MyFile
prlctl exec myProgram.exe argument1> NUL < /dev/null & MyFile
prlctl exec myProgram.exe argument1> NUL < /dev/null MyFile
prlctl exec myProgram.exe argument1> NUL & MyFile
prlctl exec myProgram.exe argument1 >NUL & MyFile
我期待 myProgram 启动并运行 MyFile。
来自文档:Parallels pdf 文档 或 parallels html 文档
prlctl exec <vm_id | vm_name> <command>
所以我上面的命令缺少虚拟机名称。 我认为默认情况如下所示
prlctl exec "Windows 11" "C:\path\to\myProgram.exe" "X:path\to\MyFile.txt"
但是这并没有完全按预期工作,因为程序找不到 myFile.txt。问题是用户不是我,所以为了纠正这个问题,我使用以下命令
prlctl exec --current-user "Windows 11" "C:\path\to\myProgram.exe" "X:path\to\MyFile.txt"
您可以使用的替代方案
prlctl exec --user <user_name> --password <password> "Windows 11" "C:\path\to\myProgram.exe"
为了发现这一切,我使用 intercavie 命令,它允许我通过终端与 cmd 提示符动态交互。
prlctl enter "Windows 11"
whoami
nt权限\系统
这不是我预期的用户,并意识到我无权访问我预期在该系统中安装的驱动器。我通过在隧道/登录到并行 VM cmd 提示符时执行以下操作发现了这一点
wmic logicaldisk get caption
更正虚拟机名称和用户名后,命令执行基本正确。 我仍然遇到权限问题,但程序现在可以找到 myfile.txt。我相信我当前的权限问题与上述无关。