Service sc和start之间的差异。。。并启动服务。。。在PowerShell 2中
我在同一台机器上安装了一些不同的服务。我正在编写一个PowerShell 2脚本来启动和停止它们 对于某些服务,我可以使用Service sc和start之间的差异。。。并启动服务。。。在PowerShell 2中,service,powershell-2.0,windows-server-2003,Service,Powershell 2.0,Windows Server 2003,我在同一台机器上安装了一些不同的服务。我正在编写一个PowerShell 2脚本来启动和停止它们 对于某些服务,我可以使用Start Service-displayname“the Service”成功启动它。在其他情况下,使用Start Servicecmdlet会导致“无法在计算机上启动服务…”这样的错误 如果我使用Start Servicecmdlet收到错误,sc启动“服务”始终成功 反之亦然(尽管sc start不会返回任何错误,只是根本不会启动服务。) 这些命令之间有什么区别吗?我是
Start Service-displayname“the Service”
成功启动它。在其他情况下,使用Start Service
cmdlet会导致“无法在计算机上启动服务…”这样的错误
如果我使用Start Service
cmdlet收到错误,sc启动“服务”
始终成功
反之亦然(尽管sc start
不会返回任何错误,只是根本不会启动服务。)
这些命令之间有什么区别吗?我是否应该使用其他命令?最后,我是否可以“捕获”cmdlet中的任何错误,并仅包含两个命令以覆盖所有基础
即使我卸载并重新安装服务,这个问题对我来说也是可以重复的
谢谢 我不确定
sc start
和start service
之间的区别,但是您可以使用wmi来做您想做的事情
要启动服务,请执行以下操作:
(get-wmiobject win32_service -filter "name='the service'").startService()
(get-wmiobject win32_service -filter "name='the service'").stopService()
if ((get-wmiobject win32_service -filter "name='the service'").state -eq "Running") {
(get-wmiobject win32_service -filter "name='the service'").stopService()
} # Stops the service if it is running
if ((get-wmiobject win32_service -filter "name='the service'").state -eq "Stopped") {
(get-wmiobject win32_service -filter "name='the service'").startService()
} # starts the service if it is stopped
要停止服务,请执行以下操作:
(get-wmiobject win32_service -filter "name='the service'").startService()
(get-wmiobject win32_service -filter "name='the service'").stopService()
if ((get-wmiobject win32_service -filter "name='the service'").state -eq "Running") {
(get-wmiobject win32_service -filter "name='the service'").stopService()
} # Stops the service if it is running
if ((get-wmiobject win32_service -filter "name='the service'").state -eq "Stopped") {
(get-wmiobject win32_service -filter "name='the service'").startService()
} # starts the service if it is stopped
要检查服务的状态,可以使用:
get-wmiobject win32_service -filter "name='the service'"
它将向您显示状态和启动模式。如果您想自动执行此操作,可以使用以下命令
要停止服务,请执行以下操作:
(get-wmiobject win32_service -filter "name='the service'").startService()
(get-wmiobject win32_service -filter "name='the service'").stopService()
if ((get-wmiobject win32_service -filter "name='the service'").state -eq "Running") {
(get-wmiobject win32_service -filter "name='the service'").stopService()
} # Stops the service if it is running
if ((get-wmiobject win32_service -filter "name='the service'").state -eq "Stopped") {
(get-wmiobject win32_service -filter "name='the service'").startService()
} # starts the service if it is stopped
要启动服务,请执行以下操作:
(get-wmiobject win32_service -filter "name='the service'").startService()
(get-wmiobject win32_service -filter "name='the service'").stopService()
if ((get-wmiobject win32_service -filter "name='the service'").state -eq "Running") {
(get-wmiobject win32_service -filter "name='the service'").stopService()
} # Stops the service if it is running
if ((get-wmiobject win32_service -filter "name='the service'").state -eq "Stopped") {
(get-wmiobject win32_service -filter "name='the service'").startService()
} # starts the service if it is stopped
我相信你可以根据自己的需要修改
我喜欢使用wmi的原因是能够指定
-computername
和-credentials
。它使您能够访问远程系统,并在拥有非域系统时对其进行身份验证。希望这有帮助。祝你今天愉快 这可能与sc start
在某些情况下不起作用的原因有关:
也许我需要这样称呼它:
和“sc启动‘服务’”
在powershellsc
中是设置内容
。请参见help sc
,它与在cmd.exe
中运行sc
时不同
您可能需要查看启动服务
,重新启动服务
,停止服务
。
使用Get命令
帮助您找到所需的commandlet:
PS C:\> Get-Command | findstr Service
Cmdlet Get-Service Microsoft.PowerShell.Management
Cmdlet New-Service Microsoft.PowerShell.Management
Cmdlet New-WebServiceProxy Microsoft.PowerShell.Management
Cmdlet Restart-Service Microsoft.PowerShell.Management
Cmdlet Resume-Service Microsoft.PowerShell.Management
Cmdlet Set-Service Microsoft.PowerShell.Management
Cmdlet Start-Service Microsoft.PowerShell.Management
Cmdlet Stop-Service Microsoft.PowerShell.Management
Cmdlet Suspend-Service Microsoft.PowerShell.Management
PS>cmd--%/c sc query wsearch
--%=绕过解析器,将其附加到cmd解析为的任何内容,然后运行命令并退出