问题描述
我正在尝试将Windows SandBox与PowerShell登录命令一起使用。这是我的WSB文件的logonCommand
部分:
<logonCommand>
<Command>C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -executionpolicy unrestricted -file "C:\\Users\\WDAGUtilityAccount\\Desktop\\boot.ps1" -noexit</Command>
</logonCommand>
Windows沙箱实例可以正常加载,表明WSB文件内容没有语法/验证问题,但未显示PowerShell窗口。添加-windowstyle normal
无效。
我怀疑logonCommand
内容在不可见的命令提示符中运行,因此运行命令以某种方式从其中打开PowerShell,从而“继承”了终端窗口不可见。
在这种情况下是否可以强制PowerShell终端窗口显示自身?我想这样做是为了看到错误,因为PowerShell脚本未按预期执行,并且我看不到任何输出/进度指示。
解决方法
找到了一个答案(看起来不是最干净的选项,但是可行):
<Command>C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -executionpolicy unrestricted -command "start powershell {-noexit -file C:\\Users\\WDAGUtilityAccount\\Desktop\\boot.ps1}"</Command>
-
C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe
从CMD切换到PowerShell-
powershell
单独行不通 -
-windowstyle normal
无法使此PowerShell窗口可见
-
-
-executionpolicy unrestricted
允许嵌套的PowerShell从文件运行 -
-command "start powershell
运行带有可见窗口的另一个PowerShell- 直接为
LogonCommand
运行此操作
- 直接为
-
-noexit
告诉嵌套的PowerShell保持可见- 这不是必需的,但对于调试脚本错误很有用
-
-file C:\\Users\\WDAGUtilityAccount\\Desktop\\boot.ps1}"
运行给定脚本- 在WSB配置中使用
MappedFolder
将其放入计算机中
- 在WSB配置中使用