none
PowerShell. Получение актуального статуса служб с группы серверов.

    Вопрос

  • Коллеги, Доброго часа!

    Вот скрипт

    $srvrs = @("server1.domain.local", "server2.domain.local")
    foreach ($srvr in $srvrs)
                        {
                        Invoke-Command -ComputerName "$srvr" -ScriptBlock {` 
                        
                            $srvs = Get-Service -Name "SQLSERVERAGENT","MSSQLSERVER","*1C*"
                            if ($srvs.Status -eq "Stopped")
                                {
                                    $srvs | Start-Service
                                   
                                }
                                $srvs | select @{name = "Name"; expression = {$_.Name}}`
                                               @{name = "Status"; expression = {$_.Status}}
                                               @{name = "PSComputerName"; expression = {$_.MachineName}}
                                                                           }
                        }

    Но на выходе получаю вот это:

    A positional parameter cannot be found that accepts argument 'System.Collections.Hashtable'.
        + CategoryInfo          : InvalidArgument: (:) [Select-Object], ParameterBindingException
        + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand
        + PSComputerName        : Server1.domain.local
     
    
    Name                           Value                                                                                                                                                                                                                
    ----                           -----                                                                                                                                                                                                                
    name                           PSComputerName                                                                                                                                                                                                       
    expression                     $_.MachineName                                                                                                                                                                                                       
    A positional parameter cannot be found that accepts argument 'System.Collections.Hashtable'.
        + CategoryInfo          : InvalidArgument: (:) [Select-Object], ParameterBindingException
        + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand
        + PSComputerName        : Server2.domain.local
     
    name                           PSComputerName                                                                                                                                                                                                       
    expression                     $_.MachineName  

    В идеале вид должен быть:


    Name                      Status        PSComputerName

    _____                     ______       _______________

    MSSQLSERVER        Running      server1.domain.local

    SQLSERVERAGENT   Running     server1.domain.local

    MSSQLSERVER        Running     server2.domain.local

    И так далее..

    Что не так в синтаксисе?

    Заранее спасибо!

    26 ноября 2018 г. 11:26

Ответы

  • $srvrs = @("server1.domain.local", "server2.domain.local")
    Invoke-Command -ComputerName $srvrs -ScriptBlock { 
        $srvs = Get-Service -Name "SQLSERVERAGENT","MSSQLSERVER","*1C*"
        if ($srvs.Status -eq "Stopped")
        {
            $null = $srvs | Start-Service
            $srvs = Get-Service -Name "SQLSERVERAGENT","MSSQLSERVER","*1C*"                    
        }
        $srvs
    } | Select  Name,Status,PSComputerName
    

    • Помечено в качестве ответа ReMCatcheR 26 ноября 2018 г. 12:18
    26 ноября 2018 г. 11:50
    Отвечающий

Все ответы