
PowerShell停止服务简介
PowerShell中的Stop-Service cmdlet用于停止本地计算机或远程计算机上的运行服务。你可以同时停止一个或多个服务。例如,服务可以通过名称、显示名称或输入对象来停止。
语法:
Stop-Service命令使用以下语法。
Stop-Service
[-Force] [-NoWait] [-Name] <String[]>
[-InputObject] <ServiceController[]>
[-DisplayName] <String[]>
[-PassThru] [-Include <String[]>] [-Exclude <String[]>] [-WhatIf] [-Confirm] [<CommonParameters>]
参数
以下是PowerShell Stop-Service的参数
1.-名称
这个参数用于服务名称或别名。你可以使用通配符(*)。要停止多个服务,你可以用逗号(,)来分隔它们。例如,Print Spooler服务的别名是Spooler,像所有其他服务都有自己的别名。
2.2.-DisplayName
当你使用这个参数时,你需要提供服务的显示名称。它是一个字符串数据类型。你可以提供多个显示名称,用逗号(,)分开。允许使用通配符(*)。 例如,"Windows Management Instrument "是winmgmt服务别名的显示名称。
3.3. -InputObject
你可以提供多个服务作为输入对象参数的变量,以停止本地和远程计算机上的服务。
4.4.-Include
这个参数指定了当你停止任何服务时要包括的服务名称。这个参数的值限定了Name参数。你可以使用通配符(*)。例如,当你指定S*,它将停止所有以S开头的服务。
5.-排除
这个参数指定了当你停止任何服务时要排除的服务名称。这个参数的值限定了Name参数。你可以使用通配符(*)。例如,当你指定S*时,它将停止其余服务,排除以S开头的服务。
6.6. -Passthru
默认情况下,Stop-Service不在PowerShell控制台中显示输出。当你使用这个参数时,输出将显示在PowerShell控制台中。
7.-WhatIf
当使用这个参数时,它显示当Stop-Service运行时要执行的操作,而不运行实际的命令。
8.-确认
这个参数将在停止服务前提示用户同意。以下是-Confirm参数的可用选项。
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] 帮助(默认是 "Y")。
Y(Yes)- 它将停止单个服务,如果有多个服务,检查将为下一个服务再次运行。
A (Yes to All)- 它将停止Stop-Service命令中提供的所有服务。
N(No): 它不会停止单个服务,如果有多个服务,检查将为下一个服务再次运行。
L (No to All): 它不会停止Stop-Service命令中提供的所有服务。
S (Suspend): 它将跳过服务的停止,这意味着它将使服务处于当前状态。
9.-强制
使用Force参数将停止服务,即使该服务有依赖服务在运行。所以它首先停止从属服务,然后再停止服务本身。
10.10.-NoWait
当你指定**-Nowait参数**时,PowerShell控制台不会等待服务的停止,执行会转到下一个代码。
11.-通用参数
以下是Stop-Service支持的常用参数。
-Verbose, -Debug, -ErrorAction, -ErrorVariable, -WarningVariable, -WarningAction, -OutBuffer, -OutVariable。
PowerShell停止服务的例子
下面提到了不同的例子。
1.Stop-Service cmdlet
当你刚写完Stop-Service,它将等待输入对象,如下图所示。输入对象可以是服务别名,显示名称,或者像变量一样的输入对象。
Stop-Service
输出:

2.使用-名称参数的Stop-Service
你可以在-Name参数后提供服务名称(别名名称)。Stop-Service cmdlet将-Name作为默认参数。当你停止服务时,你将不会在控制台中得到任何输出。你需要使用Get-Service命令来检索服务的状态。你也可以使用-PassThru参数,这将在后面的例子中解释。
Stop-Service -Name Spooler
Get-Service Spooler
输出:

你可以用逗号(,)分隔多个服务来停止它们。比如说
Stop-Service -Name Spooler, Winmgmt, PlugPlay
Get-Service Spooler, Winmgmt, PlugPlay
输出:

你也可以使用通配符(*)。
例如。
Stop-Service -Name Spooler, "Winmg*", "*Plug*" -PassThru
输出:

3.使用-Passthru参数停止服务
在上面的例子中,我们已经看到,我们需要使用Get-Service cmdlet来获得服务状态。你也可以使用-Passthru参数,它在控制台本身显示输出。
Stop-Service -Name Spooler, "Winmg*", "*Plug*" -PassThru
输出:

4.使用-DisplayName参数的Stop-Service
你可以提供显示名称作为Stop-Service的输入来停止服务。
比如说
Stop-Service -Name Spooler, Winmgmt, PlugPlay -PassThru
输出:

5.使用-InputObject参数的Stop-Service
这里,我们将在变量中存储一些服务别名,并将其传递给InputObject参数。
$services = "Spooler","Plugplay","Winmgmt"
Stop-Service -InputObject $services -PassThru
输出:

6.用-Include参数停止服务
在下面的变量中,我们只需要停止 "Print Spooler "服务。所以当我们使用-Include参数时,它将只包括Spooler服务。
$services = "Spooler","Plugplay","Winmgmt"
Stop-Service $services -Include "Spoo*" -PassThru
输出:

7.使用-排除参数停止服务
下面给出的变量将排除Spooler服务,所以其他两个服务将被自动重新启动。
$services = "Spooler","Plugplay","Winmgmt"
Stop-Service $services -Exclude "Spoo*" -PassThru
输出:

8.带有-WhatIf参数的停止服务
Whatif参数将预测命令的执行,而不实际执行该命令。下面是一个例子。
Stop-Service -Name Spooler -WhatIf
输出:

9.使用-Confirm参数停止服务
你可以使用布尔值(false)的-Confirm参数。当你指定false时,服务将被停止。
Stop-Service -Name Spooler -Confirm:$false -PassThru
输出:

Stop-Service -Name Spooler -Confirm:$true -PassThru
输出:

10.使用-Force参数停止服务
一些服务有附属服务,不能在不停止附属服务的情况下直接停止。因此,-Force参数会停止该服务和它的附属服务。例如,Winmgmt服务。
Stop-Service Winmgmt -Force -PassThru
输出:

11.带有-NoWait参数的停止-服务
有些服务需要时间来停止,在这之前执行会停止。例如,-NoWait参数在后台停止,执行会转到下一个代码。
比如说
Stop-Service Winmgmt -NoWait -PassThru
输出:
