InnoScript运行PowerShell命令
我试图运行PowerShell命令,我知道,PowerShell命令工作正常,但是当我尝试使用innoscript它打开了的PowerScript并显示命令,但似乎并没有运行它来运行它。InnoScript运行PowerShell命令
我基本上是试图改变在MySQL配置文本文件中的文本。
这是我的代码
Filename: powershell.exe; Parameters: "-NoExit {{(Get-Content \""{code:GetConfigPath}\my.ini\"") | ForEach-Object {{ $_ -replace \""max_connections=[0-9]+$\"", \""max_connections=10000\"" } | Set-Content \""{code:GetConfigPath}\my.ini\""}"; StatusMsg: CHANGING MAX CONNECTIONS; Description: CHANGING MAX CONNECTIONS; Flags: runascurrentuser
如果我使用ShellExec标志它说,PSReadLine不可用PowerShell中的
我得到相同的结果,当我执行你的命令直接。所以你的问题与Inno Setup无关。
要使命令工作,只是去掉最外层的括号内。
Filename: powershell.exe; Parameters: "-NoExit (Get-Content \""{code:GetConfigPath}\my.ini\"") | ForEach-Object {{ $_ -replace \""max_connections=[0-9]+$\"", \""max_connections=10000\"" } | Set-Content \""{code:GetConfigPath}\my.ini\"""; StatusMsg: CHANGING MAX CONNECTIONS; Description: CHANGING MAX CONNECTIONS; Flags: runascurrentuser
没有方括号,它不会执行命令属性并删除my.ini文件中的几乎所有文本 – FillyPajo
好的,我放错了位置括号在我的答案。现在已经修复了。但我的建议仍然成立,只是删除最外面的括号。 –
为了解释发生这种情况的原因,原始的PowerShell代码定义了一个新的ScriptBlock,但不执行它或将其分配给一个变量。因此它变成了一个沿着管线走下去的物体。然后它打到'Out-Default'并转到格式引擎,该引擎将其转换为字符串以便在屏幕上打印。 卸下外括号定义了一系列实际执行的命令。 – JasonMArcher
您的意思是PSReadLine? –
是的,这就是我的意思 – FillyPajo
尝试使用'-NoProfile'作为第一个参数 –