我尝试将PowerShell项目转换为可执行程序(.exe)。经过一些研究,我找到了PowerGUI。将我的.ps1文件转换为exe后,我遇到了一些问题:
首先启动程序需要很长时间(大约15秒),这是正常的还是我可以做些什么来改善这个?
其次,如果我退出程序,我会收到一条Windows错误消息,说该程序意外停止工作。有没有办法隐藏这条消息?
这是我的ps1代码,我从博客中得到了它的一部分,这是我的第一个PowerShell代码,所以不要对我苛刻;)
explicit
答案 0 :(得分:1)
关于 15秒我不知道为什么。你能提供更多细节吗?您应该在每条消息中添加日志记录并设置时间戳...这样您就可以找到慢速部分。
关于避免错误消息,您应该使用try/catch包围代码。例如:
[...]
write-host "To show the form, run the following" -ForegroundColor Cyan
function Show-Form
{
$Form.ShowDialog() | out-null
}
try
{
Show-Form
}
catch
{
$ErrorMessage = $_.Exception.Message
# Show friendly message with error and/or log the error)
}
在阅读完代码后,这里有一些额外的建议可能会有用:
答案 1 :(得分:1)
暂停15秒是PowerShell在后台初始化。这在Windows 7上尤为明显
CAVEAT:在大多数情况下(包括PowerGUI)“编译”PowerShell到EXE会将原始PS1文件填充到自解压EXE中。您可以使用7-Zip或WinZip执行相同的操作。
PowerGUI“已编译”EXE将您的脚本执行锁定到DEV盒上的任何版本或PowerShell + .Net。 IOW:如果您在使用PowerShell v4的PC上编译但仅在脚本中使用Write-host(例如),目标PC将需要PowerShell v4 +才能运行!