Я написал скрипт, который управляет службами на сервере и запускает / останавливает и т. Д., В зависимости от Задачи в файле csv, а также изменяет тип запуска, опять же, в зависимости от типа запуска в файле csv.
CSV-файл:
Server,Service,Startup Type,Task
server1,SQL Server Analysis Services (MSSQLSERVER),automatic,start
server2,"SQL Server Analysis Services (MSSQLSERVER), SQL Server Analysis Services (MSSQLSERVER) CEIP",Manual,stop
Сценарий
$csvFile = Import-CSV .\SSAS_services.csv
$ServiceState = Get-Service -Name
$ServiceStartupType = Get-Service | select -property name,starttype
ForEach ($row in $csvFile)
{
#checking if service in csv file exists on server
if (Get-Service $row.Service | Select-Object Name, StartType, Status -ComputerName $row.Server -ErrorAction SilentlyContinue)
{
"$row.Service not found on $row.Server!" | out-file .\SSAS_services.txt -Append
}
else
{
Get-Service $row.Service | Select-Object Name, StartType, Status -ComputerName $row.Server | select machinename,name | format-table -AutoSize
}
# Change the service on the server
if ($row.Task -eq "stop" -and $row.Server $ServiceState $row.Service -ne "stop")
{
Invoke-Command -ScriptBlock { Stop-Service $using:row.Service } -ComputerName $row.Server -ArgumentList $row
Start-Sleep 60
}
elseif ($row.Task -eq "start" -and $row.Server $ServiceState $row.Service -ne "start")
{
Invoke-Command -ScriptBlock { Start-Service $using:row.Service } -ComputerName $row.Server -ArgumentList $row
Start-Sleep 60
}
elseif ($row.Task -eq "pause" -and $row.Server $ServiceState $row.Service -ne "pause")
{
Invoke-Command -ScriptBlock { Suspend-Service $using:row.Service } -ComputerName $row.Server -ArgumentList $row
Start-Sleep 60
}
elseif ($row.Task -eq "Restart")
{
Invoke-Command -ScriptBlock { Restart-Service $using:row.Service } -ComputerName $row.Server -ArgumentList $row
Start-Sleep 60
}
#changing startup type if different
if ($row."Startup Type" -eq $ServiceStartupType -ComputerName $row.Server)
{
"Changing Startup Type from '$ServiceStartupType' to $row.'Startup Type'"
Invoke-Command -ScriptBlock { Set-Service $using:row.Service -StartupType $using:row."Startup Type" } -ComputerName $row.Server -ArgumentList $row
}
} | Tee-object .\SSAS_services.txt -Append
Я получаю следующие ошибки:
Неожиданный токен '$ ServiceState' в выражении или операторе.
+ if ($ row.Task -eq "stop" и $ row.Server $ ServiceState $ row.Serv ...
Отсутствует закрытие ')' после выражения в операторе if.
+ ... if ($ row.Task -eq "stop" и $ row.Server $ ServiceState $ row.Service ...
Отсутствует закрывающий '}' в блоке оператора или определении типа.
+ ... sk -eq "stop" и $ row.Server $ ServiceState $ row.Service -ne "stop")
+
Неожиданный токен ')' в выражении или утверждении.
+ ... elseif ($ row.Task -eq "start" -and $ row.Server $ ServiceState $ row.Se ...
~
Неожиданный токен «$ ServiceState» в выражении или выражении.
+ elseif ($ row.Task -eq "start" и $ row.Server $ ServiceState $ row ...
+
Неожиданный токен '$ row' в выражении или выражении.
+ ... -eq "start" -and $ row.Server $ ServiceState $ row.Service -ne "start")
+ Неожиданный токен ')' в выражении или утверждении.
+ ... elseif ($ row.Task -eq "pause" -and $ row.Server $ ServiceState $ row.Se ...
+
~~~~~~~~~~~~~ Неожиданный токен '$ ServiceState' в выражении или выражении. Не все ошибки разбора были зарегистрированы. Правильный
обнаруженные ошибки и попробуйте еще раз.
+ CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId: UnexpectedToken ~