我需要在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)
答案 0 :(得分:0)
能够在批处理文件中执行此操作应该只是让您的语法正确。试试这个:
tei2:tei2html
至于不必在管理员中运行,请检查文件中的安全选项卡,并确保您的用户帐户拥有该权限,而不仅仅是管理员组中的人员。