Лучший отвечающий
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Отвечающий
Все ответы
-
$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Отвечающий -
Спасибо, работает!26 ноября 2018 г. 12:18