仅在使用 sc.exe 查询时返回服务状态

Nie*_*man 5 services powershell query

当使用以下命令将有关服务的信息返回到文件时:

sc.exe query MyService >> MyFileLocation\MyFile.txt
Run Code Online (Sandbox Code Playgroud)

我在文件中得到以下信息:

SERVICE_NAME: MyService 
        TYPE               : 10  WIN32_OWN_PROCESS  
        STATE              : 4  RUNNING 
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
Run Code Online (Sandbox Code Playgroud)

但我只需要国家。我已经检查了文档中的属性:

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/sc-query

但我找不到任何可以让我返回状态的东西。是否可以这样做?如果可以,该如何做?提前致谢。

LPC*_*hip 11

使用sc.exe是cmd方式。

由于您使用的是PowerShell,建议使用Powershell函数Get-Service。

这允许您使用以下代码:

(Get-Service MyService).status
Run Code Online (Sandbox Code Playgroud)

这导致:

Running
Run Code Online (Sandbox Code Playgroud)

要将其直接打印到文件,您可以使用:

(Get-Service MyService).status | out-file "MyLocation\MyFile.txt" -append
Run Code Online (Sandbox Code Playgroud)

鉴于我们使用 powershell,您甚至可以执行以下操作:

$status = (Get-Service MyService).status
"The status of MyService is $status" | out-file -path "MyLocation\MyFile.txt" -append
Run Code Online (Sandbox Code Playgroud)


Red*_*dio 9

您可以尝试以下操作:

sc.exe query MyService | select-string state >> MyFileLocation\MyFile.txt
Run Code Online (Sandbox Code Playgroud)

结果应该是:

STATE              : 4  RUNNING
Run Code Online (Sandbox Code Playgroud)

使用“纯”powershell:

Get-Service MyService | select Status
Run Code Online (Sandbox Code Playgroud)