1

我正在编写一个清单脚本以从服务器列表中收集一些信息,并且我试图在其中放置一个检查服务的部分,如果服务正在运行,它会使用“已安装”填充 Excel 文档中的一个单元格,如果该服务不存在“未安装”。

现在,下面的代码非常适合它可以联系的服务器,但是如果它试图针对没有回复的服务器运行,它会在单元格中填充“已安装”。

有什么建议么?

if (Get-Service "ConfigMgr Task Sequence Agent" -ErrorAction SilentlyContinue)
{$Sheet1.Cells.Item($intRowNet, 41) = "Installed"} 
else
{$Sheet1.Cells.Item($intRowNet, 41) = "Not installed"} 
4

2 回答 2

1

将您的 ErrorAction 切换为“停止”,并使用 Try/Catch 处理失败的操作:

Try{
  if (Get-Service "ConfigMgr Task Sequence Agent" -ErrorAction Stop)
    {$Sheet1.Cells.Item($intRowNet, 41) = "Installed"} 
     else
     {$Sheet1.Cells.Item($intRowNet, 41) = "Not installed"} 
    }

 Catch {
         $Sheet1.Cells.Item($intRowNet, 41) = "Query failed"
        }
于 2013-04-03T14:15:07.650 回答
0

在运行之前,Get-Service您可以执行Test-Connection.

if(!(Test-Connection -ComputerName $server -Count 1 -Quiet)){
    'Cannot Communicate'
    continue
}
于 2013-04-03T16:46:11.073 回答