从Powershell向cmd传递命令

时间:2018-06-28 08:50:29

标签: powershell cmd registry

我想通过以下命令对注册表项进行更改:

REG ADD "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQLServer\SuperSocketNetLib\Tcp\IPAll" /v TcpDynamicPorts /t REG_SZ /d 6363 /f

这必须在cmd中发生,我使用以下命令在批处理文件中通过powershell以管理员身份运行了该cmd:

powershell.exe Start-Process cmd.exe -Verb runAs

我需要UAC提示,以便用户输入他的管理员凭据,以使其尽可能对用户友好。 现在我的问题是:如何将reg add命令传递给以管理员身份启动的控制台?

1 个答案:

答案 0 :(得分:2)

您需要像这样在-ArgumentList参数中传递命令:

powershell.exe "Start-Process powershell -ArgumentList 'REG ADD "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQLServer\SuperSocketNetLib\Tcp\IPAll" /v TcpDynamicPorts /t REG_SZ /d 6363 /f' -Verb RunAs"

这将执行PowerShell,该PowerShell尝试执行另一个PowerShell窗口,要求您提供凭据,然后执行REG ADD命令并最后关闭PowerShell。

请记住,您没有错误处理或类似的内容,因此您可能希望稍后添加它们,因为它们可能非常有用。