使用 PowerShell 启动和停止 Windows 服务

使用 PowerShell 启动和停止 Windows 服务

我正在运行 Apache(作为 Windows 服务)和 IIS 10,并且希望能够打开或关闭这些服务,因为它们都占用端口 80,而我不希望配置任何一个来使用其他端口。

因此,我想编写一个 PowerShell 脚本,用于停止 IIS 并启动 Apache 或反之亦然。我该如何实现这一点?

答案1

function Switch-Webserver {

    Param(
        [Parameter( ParameterSetName = "IIS")]
        [switch]$IIS,
        [Parameter( ParameterSetName = "Apache")]
        [switch]$Apache
    )

    switch ($PSCmdlet.ParameterSetName)
    {
        'IIS'    { get-service "Apache" | stop-service -force ; start-service IISAdmin }
        'Apache' { get-service IISAdmin | stop-service -force ; start-service "Apache" }
    }

}

您可以在 PowerShell 控制台中像这样使用此功能:

Switch-Webserver -IIS # This will stop Apache and start IIS
Switch-Webserver -Apache # This will stop IIS and start Apache

你可以把这个函数放在你的PowerShell 配置文件或者从控制台窗口加载它,如下所示:

. C:\Path\To\Function\Switch-Webserver.ps1

答案2

诀窍是在启动和停止服务时使用参数,以便它们可以在后台运行。首先,您可能需要安装服务。然后。要正常停止 Apache,请在脚本中使用此脚本:

httpd -k graceful-stop

只需将上述内容放入脚本并执行它,它就会停止 apache。

首先,你可能已经猜到了:

httpd -k start

对于停止和启动 IIS,您可以找到说明这里

相关内容