用于更改文件

时间:2016-08-16 16:59:00

标签: mysql .net powershell batch-file config

我需要在MySQL设置中更改my.ini文件。我想增加max_connections。所以基本上有一个.bat文件调用一些powershell命令来替换文件中的文本文件并保存它。

我试图通过运行一个运行powershell命令来更改文本的.bat文件来做到这一点,到目前为止,这一直是一个令人头痛的问题。我已经尝试了几种解决方案,它要么没有给我替换文本的权限,要么告诉我该对象不能在管道命令中使用。

我设法在不使用.bat文件的情况下在admin powershell中使用它,但它不允许我在非管理员和.bat文件中执行此操作。

我试过以下

PowerShell -NoExit -Command "(Get-Content 'C:\ProgramData\MySQL\MySQL Server 5.7\my.ini') | ForEach-Object { $_ -replace \"max_connections=[0-9]+$\", \"max_connections=10000\" } | Set-Content 'C:\ProgramData\MySQL\MySQL Server 5.7\my.ini' -"

并收到以下错误

  

Set-Content:输入对象不能绑定到命令的任何参数,因为命令没有   获取管道输入或输入及其属性与管道输入的任何参数都不匹配。

我也使用admin powershell调用

尝试了这种变体
PowerShell -NoExit -Command "Start-Process powershell -verb runas -ArgumentList \"-NoExit -Command (Get-Content 'C:\ProgramData\MySQL\MySQL Server 5.7\my.ini') | ForEach-Object {{ $_ -replace \""max_connections=[0-9]+$\"", \""max_connections=10000\"" } | Set-Content 'C:\ProgramData\MySQL\MySQL Server 5.7\my.ini' -\""

但是我收到以下错误

  

PowerShell -NoExit -Command“Start-Process powershell -verb runas -ArgumentList \” - NoExit -Command(Get-Content'C:\ ProgramData \ MySQL \ MySQL Server 5.7 \ my.ini')| ForEach-Object {{$ _ -replace \“”max_connections = [0-9] + $ \“”,\“”max_connections = 10000 \“”} | Set-Content'C:\ ProgramData \ MySQL \ MySQL Server 5.7 \ my.ini' - \“”   “ForEach-Object”未被识别为内部或外部命令,   可操作程序或批处理文件。

我已经看过几个有关此问题的堆栈溢出问题,但我似乎无法让它工作。

如果有更简单的方法来完成解决方案,那么我愿意接受建议。

更新:

当我复制并粘贴解决方案或获取另一个程序将其传递给powershell.exe时,我在命令中得到这些奇怪的方括号,为什么会发生这种情况? (我使用innoscript来调用powershell.exe)

enter image description here

1 个答案:

答案 0 :(得分:0)

能够在批处理文件中执行此操作应该只是让您的语法正确。试试这个:

tei2:tei2html

至于不必在管理员中运行,请检查文件中的安全选项卡,并确保您的用户帐户拥有该权限,而不仅仅是管理员组中的人员。