2016-08-16 155 views
0

我试图运行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中的

截图 enter image description here

+0

您的意思是PSReadLine? –

+0

是的,这就是我的意思 – FillyPajo

+0

尝试使用'-NoProfile'作为第一个参数 –

回答

1

我得到相同的结果,当我执行你的命令直接。所以你的问题与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 
+0

没有方括号,它不会执行命令属性并删除my.ini文件中的几乎所有文本 – FillyPajo

+1

好的,我放错了位置括号在我的答案。现在已经修复了。但我的建议仍然成立,只是删除最外面的括号。 –

+1

为了解释发生这种情况的原因,原始的PowerShell代码定义了一个新的ScriptBlock,但不执行它或将其分配给一个变量。因此它变成了一个沿着管线走下去的物体。然后它打到'Out-Default'并转到格式引擎,该引擎将其转换为字符串以便在屏幕上打印。 卸下外括号定义了一系列实际执行的命令。 – JasonMArcher