停止所有postgres服务

时间:2016-04-20 21:31:54

标签: cmd windows-services pipe

我试图编写一个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

必须有一些方法可以做到这一点

2 个答案:

答案 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