【发布时间】:2019-06-18 18:03:51
【问题描述】:
我正在尝试使用 Powershell;
能够远程停止/启动服务。
随时记录,因此如果需要停止/启动服务,它会打印出来。
但是我遇到的一个大问题是,如果该服务不存在,它会吐出一个巨大的错误。
我仍在编写脚本的其余部分,这将在关闭应用程序方面做很多事情,但我不知道该错误是否意味着脚本的其余部分将无法运行。
还有一个问题是我不确定如何将 WriteLog 函数也放入脚本的第二阶段。
我可以在 IF 之后放置多个 {} 部分,以便我可以运行 Stop 以及写入日志吗?
以下代码仅用于停止服务。
就这样;
1. 报告服务已经停止。
2. 如果不是,请停止它。
- 第 1 步和第 2 步有效,如果有服务,那就是第 3 步,我遇到了问题
3. 如果服务不存在,我希望它继续(因为服务不存在不是问题)但打印出它不存在,因为知道它们可能有用
注意,Write-Log 是一个同时写入物理日志文件和控制台的函数。
IF (Get-Service -ComputerName localhost -Name ('ServiceName') | Where-Object {$_.Status -eq "Stopped"})
{Write-Host "'ServiceName' is already stopped, proceeding..."}
ELSEIF
(Get-Service -ComputerName localhost -Name ('ServiceName') | Where-Object {$_.Status -eq "Running"})
{Get-Service -ComputerName localhost -Name ('ServiceName') | Stop-Service -Force}
ELSEIF
(Get-Service -ComputerName localhost -Name ('ServiceName') -ErrorAction "Continue")
{Write-Host "'ServiceName' doesn't exist, proceeding..."}
现在这会打印出 3 次找不到服务的错误。
我知道这是因为它在通过管道进行评估之前无法获得服务,无论它是否停止。
所以我认为我使用的方法完全错误,但不知道该去哪里。
除了“ServiceName 不存在,正在处理...”之外,我希望什么都不会被打印出来。
【问题讨论】: