Automação de Serviços no SharePoint Server e SQL Server com PowerShell
Gerenciar manualmente os serviços do SharePoint Server e SQL Server em um ambiente on-premises pode ser uma tarefa repetitiva e propensa a erros, especialmente em servidores que requerem controle frequente dos serviços. Automatizar essa tarefa usando um script PowerShell pode economizar tempo e reduzir o risco de interrupções ou configurações incorretas. Neste post técnico, vamos explorar como criar um script PowerShell para ligar e desligar todos os serviços do SharePoint e SQL Server de maneira rápida e eficiente.
Por Que Automatizar o Controle de Serviços?
Em um ambiente SharePoint e SQL Server on-premises, você frequentemente precisa iniciar ou parar serviços para:
- Realizar manutenções.
- Aplicar atualizações de segurança.
- Aumentar ou diminuir a carga do servidor.
Automatizar esse processo com PowerShell permite:
- Executar as operações de forma consistente.
- Agendar essas tarefas para horários fora do expediente.
- Evitar erros humanos ao lidar com múltiplos serviços.
Vamos criar um script PowerShell que oferece um menu simples para ligar ou desligar todos os serviços relevantes.
Script PowerShell para Ligar e Desligar Serviços
O script a seguir executa duas tarefas principais:
- Iniciar todos os serviços do SharePoint e SQL Server.
- Parar todos os serviços do SharePoint e SQL Server.
Ele identifica os serviços com base nos nomes dos mesmos e os controla de acordo com a opção escolhida pelo usuário.
Código PowerShell:
# Função para iniciar os serviços do SharePoint
function Start-SharePointServices {
Write-Host "Iniciando os serviços do SharePoint..."
# Obtém todos os serviços relacionados ao SharePoint no servidor
$sharepointServices = Get-Service | Where-Object { $_.DisplayName -like "*SharePoint*" }
# Inicia todos os serviços do SharePoint
foreach ($service in $sharepointServices) {
if ($service.Status -ne "Running") {
Write-Host "Iniciando o serviço: $($service.DisplayName)"
Start-Service -Name $service.Name
} else {
Write-Host "O serviço $($service.DisplayName) já está em execução."
}
}
}
# Função para parar os serviços do SharePoint
function Stop-SharePointServices {
Write-Host "Parando os serviços do SharePoint..."
# Obtém todos os serviços relacionados ao SharePoint no servidor
$sharepointServices = Get-Service | Where-Object { $_.DisplayName -like "*SharePoint*" }
# Para todos os serviços do SharePoint
foreach ($service in $sharepointServices) {
if ($service.Status -eq "Running") {
Write-Host "Parando o serviço: $($service.DisplayName)"
Stop-Service -Name $service.Name
} else {
Write-Host "O serviço $($service.DisplayName) já está parado."
}
}
}
# Função para iniciar os serviços do SQL Server
function Start-SQLServices {
Write-Host "Iniciando os serviços do SQL Server..."
# Obtém todos os serviços relacionados ao SQL Server no servidor
$sqlServices = Get-Service | Where-Object { $_.DisplayName -like "*SQL Server*" }
# Inicia todos os serviços do SQL Server
foreach ($service in $sqlServices) {
if ($service.Status -ne "Running") {
Write-Host "Iniciando o serviço: $($service.DisplayName)"
Start-Service -Name $service.Name
} else {
Write-Host "O serviço $($service.DisplayName) já está em execução."
}
}
}
# Função para parar os serviços do SQL Server
function Stop-SQLServices {
Write-Host "Parando os serviços do SQL Server..."
# Obtém todos os serviços relacionados ao SQL Server no servidor
$sqlServices = Get-Service | Where-Object { $_.DisplayName -like "*SQL Server*" }
# Para todos os serviços do SQL Server
foreach ($service in $sqlServices) {
if ($service.Status -eq "Running") {
Write-Host "Parando o serviço: $($service.DisplayName)"
Stop-Service -Name $service.Name
} else {
Write-Host "O serviço $($service.DisplayName) já está parado."
}
}
}
# Menu para o usuário escolher ligar ou desligar os serviços
function Menu {
Write-Host "Selecione uma opção:"
Write-Host "1. Iniciar todos os serviços do SharePoint e SQL Server"
Write-Host "2. Parar todos os serviços do SharePoint e SQL Server"
Write-Host "3. Sair"
$option = Read-Host "Escolha uma opção (1/2/3)"
switch ($option) {
1 {
Start-SharePointServices
Start-SQLServices
}
2 {
Stop-SharePointServices
Stop-SQLServices
}
3 {
Write-Host "Saindo do script."
exit
}
default {
Write-Host "Opção inválida. Tente novamente."
Menu
}
}
}
# Executar o menu para o usuário escolher a ação
Menu
Explicação do Script
O script é composto por quatro funções principais:
- Start-SharePointServices: Inicia todos os serviços relacionados ao SharePoint Server no servidor.
- Stop-SharePointServices: Para todos os serviços do SharePoint Server.
- Start-SQLServices: Inicia todos os serviços do SQL Server.
- Stop-SQLServices: Para os serviços do SQL Server.
Cada função obtém os serviços correspondentes usando Get-Service e filtra por nomes que contenham “SharePoint” ou “SQL Server”. O script verifica o estado de cada serviço antes de iniciar ou parar, garantindo que ele só execute as operações necessárias.
Menu Interativo
A função Menu fornece uma interface interativa para o usuário, permitindo que escolha entre:
- Iniciar todos os serviços do SharePoint e SQL Server.
- Parar todos os serviços do SharePoint e SQL Server.
- Sair do script.
O menu é útil para quando você precisa de controle manual para iniciar ou parar os serviços, como durante manutenção ou trocas de configuração.
Como Usar o Script
- Salvar o Script: Copie o código acima em um arquivo com extensão
.ps1, comoManage-SharePoint-SQL-Services.ps1. - Executar o Script: Para rodar o script, abra o PowerShell como administrador no servidor e execute o comando:
.\Manage-SharePoint-SQL-Services.ps1
- Escolher a Opção no Menu: Quando o menu aparecer, escolha a opção apropriada para iniciar ou parar os serviços, ou sair do script.
Agendando o Script com Crontab (ou Agendador de Tarefas no Windows)
Para maior automação, você pode agendar esse script para ser executado automaticamente em horários específicos, usando o Agendador de Tarefas no Windows. Isso pode ser útil em cenários como reinicializações programadas ou manutenção programada fora do horário de pico.
Como agendar no Agendador de Tarefas:
- Abra o “Agendador de Tarefas” no Windows.
- Crie uma nova tarefa e defina um gatilho para rodar em horários específicos (como diariamente às 2:00 da manhã).
- No campo “Ação”, adicione o caminho para o script PowerShell.
Conclusão
Automatizar o controle de serviços do SharePoint e SQL Server com PowerShell economiza tempo e diminui a margem para erros humanos em ambientes complexos de TI. O script apresentado neste post oferece uma solução prática, reutilizável e personalizável que pode ser adaptada para atender a diversas necessidades operacionais, tanto para administradores de servidores quanto para equipes de TI.
Esse é um exemplo de como o PowerShell pode simplificar tarefas administrativas e trazer mais controle e agilidade ao gerenciamento de servidores on-premises.

Leave a comment