3

我正在尝试将 Windows Sandbox 与 PowerShell 登录命令一起使用。这是LogonCommand我的 WSB 文件的部分:

  <LogonCommand>
    <Command>C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -executionpolicy unrestricted -file "C:\\Users\\WDAGUtilityAccount\\Desktop\\boot.ps1" -noexit</Command>
  </LogonCommand>

Windows Sandbox 实例加载正常,表明 WSB 文件内容没有语法/验证问题,但未显示 PowerShell 窗口。添加-windowstyle normal没有效果。

我怀疑LogonCommand内容是在不可见的命令提示符下运行的,因此运行命令以从中打开 PowerShell 以某种方式“继承”了不可见的终端窗口。

在这种情况下是否可以强制 PowerShell 终端窗口显示自身?我想这样做,以便我可以看到我得到的错误,因为 PowerShell 脚本没有按预期执行,而且我对任何输出/进度指示视而不见。

4

1 回答 1

7

找到答案(看起来不是最干净的选项,但有效):

<Command>powershell -executionpolicy unrestricted -command "start powershell {-noexit -file C:\Users\WDAGUtilityAccount\Desktop\boot.ps1}"</Command>
  • powershell从 CMD 切换到 PowerShell
    • -windowstyle normal无法使此 PowerShell 窗口可见
    • -executionpolicy unrestricted允许嵌套的 PowerShell 从文件运行
  • start powershell运行另一个带有可见窗口的 PowerShell
    • 直接运行这个是LogonCommand行不通的
    • -noexit告诉嵌套的 PowerShell 保持可见
      • 这不是必需的,但对于调试脚本错误很有用
    • -file C:\Users\WDAGUtilityAccount\Desktop\boot.ps1运行给定的脚本
      • MappedFolder在 WSB 配置中使用 a 与机器共享
于 2020-11-12T22:00:23.643 回答