1

我有以下问题:

当我使用:

Get-Service -Name CcmExec -ErrorAction silentlycontinue

我得到以下列表:

Status   Name               DisplayName
------   ----               -----------
Running  CcmExec            SMS Agent Host

或者

Status   Name               DisplayName
------   ----               -----------
Stopped  CcmExec            SMS Agent Host

当我使用

$service = Get-Service -Name CcmExec -ErrorAction silentlycontinue -ComputerName $Computername
write-host "$service" 

我只看到 ccmexec 而不是“正在运行”或“停止”。

4

1 回答 1

2

如果你想看到的Write-Host只是状态,你可以使用这个:

Write-Host $service.Status

或者你可以做这样的事情:

Write-Host "$($service.Name) is $($service.Status)"

您的评论中提供的代码存在一些问题。首先,您使用的是多个if语句,而不是if,elseif和/或else. (您也可以只使用switch 语句。)其次,它实际上匹配两者Running$null因为您使用的是-match而不是eq. 试试这个:

if ($ccmservice.Status -eq "Running") {
    $ExcelCell.cells.item($ExcelRow, 11) = "Running"
    } elseif ($ccmservice.Status -eq "Stopped") {
    $ExcelCell.cells.item($ExcelRow, 11) = "Not running"
    } elseif ($ccmservice.Status -eq $null) {
    $ExcelCell.cells.item($ExcelRow, 11) = "Not installed"
    }

您可以在此处获取有关 PowerShell 比较运算符的更多详细信息。

于 2014-06-20T05:36:02.087 回答