当 ps1 已成为 ps2exe 可执行文件时,开始新的 shell 不工作
Start new shell not working when the ps1 has become executable with ps2exe
我正在尝试在 windows 创建一个可执行文件 (.exe),它将首先执行一些操作,然后打开交互式 shell。在我的例子中,交互式 shell 我想成为一个 wsl,但是问题出现在创建的每种类型的 shell 中。
例如:
假设我们有文件
测试.ps1
Write-Host "Hello from my test program"
Invoke-Expression "powershell"
如果我使用命令 运行 它:./test.ps1
,结果将是打印消息并启动一个新的 powershell 实例。
如果我 运行 命令:Invoke-ps2exe .\test.ps1 test.exe
,然后 运行 test.exe
,结果将是:
Hello from my test program
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
但我无法在 window 处写任何东西。
谁能解释一下为什么会这样,我该如何克服?
按如下方式修改您的 test.ps1
文件:
Write-Host "Hello from my test program"
Start-Process -Wait -NoNewWindow powershell.exe
此更改确保 PowerShell 的常用交互主机 ConsoleHost
在从您的脚本启动的新启动的 PowerShell 会话中不会 运行 在 [=20= 之上] ps2exe
生成的 .exe
文件中内置的简化主机,这似乎会导致您的问题。
我正在尝试在 windows 创建一个可执行文件 (.exe),它将首先执行一些操作,然后打开交互式 shell。在我的例子中,交互式 shell 我想成为一个 wsl,但是问题出现在创建的每种类型的 shell 中。 例如:
假设我们有文件
测试.ps1
Write-Host "Hello from my test program"
Invoke-Expression "powershell"
如果我使用命令 运行 它:./test.ps1
,结果将是打印消息并启动一个新的 powershell 实例。
如果我 运行 命令:Invoke-ps2exe .\test.ps1 test.exe
,然后 运行 test.exe
,结果将是:
Hello from my test program
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
但我无法在 window 处写任何东西。 谁能解释一下为什么会这样,我该如何克服?
按如下方式修改您的 test.ps1
文件:
Write-Host "Hello from my test program"
Start-Process -Wait -NoNewWindow powershell.exe
此更改确保 PowerShell 的常用交互主机 ConsoleHost
在从您的脚本启动的新启动的 PowerShell 会话中不会 运行 在 [=20= 之上] ps2exe
生成的 .exe
文件中内置的简化主机,这似乎会导致您的问题。