通过NSIS无声运行PowerShell
问题描述:
我有一个PowerShell脚本,我想静默运行。 我正在使用NSIS脚本,它仍然在提升.exe文件运行时的powershell命令提示符。通过NSIS无声运行PowerShell
是否有办法让它静静地运行。
!include FileFunc.nsh
!include x64.nsh
OutFile "script.exe"
SilentInstall silent
RequestExecutionLevel admin
Function .onInit
SetSilent silent
FunctionEnd
Section
SetOutPath $EXEDIR
File "script.ps1"
IfSilent 0 +2
ExecWait "powershell -ExecutionPolicy Bypass .\script.ps1 -FFFeatureOff"
SectionEnd
Function .onInstSuccess
Delete "script.ps1"
FunctionEnd
这里有一个使用无提示安装的例子,但是当我尝试使用时,我无法使它工作。 http://nsis.sourceforge.net/Examples/silent.nsi
答
试试这个:
ExecWait "powershell -ExecutionPolicy Bypass -WindowStyle Hidden -File .\script.ps1 -FFFeatureOff"
+0
这将在屏幕上简要显示一个控制台窗口,因为控制台窗口是在powershell进程能够隐藏之前创建的。 – Anders
+0
@Anders是的,我的坏,我应该自己检查一下。感谢您的纠正。 – beatcracker
答
您可以尝试ExecShell对于这一点,它允许隐藏通过SW_HIDE标志控制台:
ExpandEnvStrings $0 "%COMSPEC%"
ExecShell "" '"$0"' "/C powershell -ExecutionPolicy Bypass .\script.ps1 -FFFeatureOff" SW_HIDE
为什么要使用IfSilent,“SilentInstall无声”将迫使它永远是沉默的。 – Anders