【问题标题】:Powershell - Start Windows service with a parameterPowershell - 使用参数启动 Windows 服务
【发布时间】:2016-05-20 03:59:46
【问题描述】:

我需要通过 Powershell 以“1”作为参数启动 Windows 服务,如下所示:

所以基本上我想用 powershell 做这样的事情:

Start-Service _MyService 1 <- won't work

谷歌搜索没有对此产生任何值得注意的信息,也许我正在寻找错误的东西,但我不敢相信这是不可能的。有线索吗?

【问题讨论】:

    标签: powershell windows-services


    【解决方案1】:

    另一种方法是使用 Get-Service cmdlet 获取服务控制器,然后调用其 Start() 方法。

    # "ServiceName" != "Display Name"
    $yourService = Get-Service "ServiceName" 
    $yourService.Start(1)
    

    如果您需要提供多个参数(感谢@Mark):

    $yourService.Start(@('arg1','arg2'))
    

    【讨论】:

    • 为了提供参数列表,我必须在 Start 调用中使用显式数组语法:$yourService.Start(@('arg1','arg2'))
    • 很好的解决方案。如果我想更新服务设置而不是使用特定参数启动服务,而是指定“启动参数”行怎么办?该怎么做?
    • @Alex,我不确定您是否可以使用从 Get-Service cmdlet 返回的服务对象来执行此操作。您可以使用 sc 命令更改图像路径以包含您的参数,如 here 所示
    【解决方案2】:

    您可以调用允许使用参数启动服务的 sc.exe:

    Invoke-Expression "sc.exe start _MyService 1"
    

    【讨论】:

    • 太好了,感谢您的快速答复。抱歉,无法将两个答案都标记为正确,但请投赞成票。我抛了个硬币,选择了董的答案。
    • @BenPower Tung 的答案即使没有硬币也可能更正确,因为它是纯 Powershell,就像在我的回答中它调用命令行寻求帮助一样
    • Invoke-Expression 是不必要的。只需输入命令:sc.exe start servicename 1
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2019-04-25
    • 2011-07-15
    • 1970-01-01
    • 2011-06-19
    相关资源
    最近更新 更多