我试图编写一个cmd来阻止我服务器上的所有PostgreSQL实例
net start | find /I "postgres"
返回我正在运行的所有实例
我认为这会起作用
net start | find /I "postgres" | net stop
for /F "delims=" %A in ('net start | find /I "postgres"') do echo %A
必须有一些方法可以做到这一点
答案 0 :(得分:1)
据我所知cmd不提供文本修剪功能,对吧?我尝试使用PowerShell
net start | ? { $_.Contains("postgres")} | % { net stop $_.Trim() }
并且工作(当然是UAC)。
解释,
?
是Where-Object的别名,而%
是ForEach-Object的别名,$_
是提到管道元素。 ForEach-Object
(%
)遍历数组的每个元素都被用管道输入内部表达式。 这些别名和命令可用于Get-Help {func}
或man {func}
的帮助文字。
答案 1 :(得分:0)
wmic service where name='lanmanserver' call stopservice
执行lanmanserver,调整您的程序。
wmic /?
wmic service get /?
wmic service call /?
或者vbscript中的相同对象。
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_Service")
For Each objItem in colItems
'msgbox objItem.caption
If LCase(objItem.name) = "lanmanserver" then msgbox objItem.stopservice
Next