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:

  1. Iniciar todos os serviços do SharePoint e SQL Server.
  2. 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:

  1. Start-SharePointServices: Inicia todos os serviços relacionados ao SharePoint Server no servidor.
  2. Stop-SharePointServices: Para todos os serviços do SharePoint Server.
  3. Start-SQLServices: Inicia todos os serviços do SQL Server.
  4. 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:

  1. Iniciar todos os serviços do SharePoint e SQL Server.
  2. Parar todos os serviços do SharePoint e SQL Server.
  3. 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

  1. Salvar o Script: Copie o código acima em um arquivo com extensão .ps1, como Manage-SharePoint-SQL-Services.ps1.
  2. Executar o Script: Para rodar o script, abra o PowerShell como administrador no servidor e execute o comando:
   .\Manage-SharePoint-SQL-Services.ps1
  1. 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:

  1. Abra o “Agendador de Tarefas” no Windows.
  2. Crie uma nova tarefa e defina um gatilho para rodar em horários específicos (como diariamente às 2:00 da manhã).
  3. 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.

Edvaldo Guimrães Filho Avatar

Published by

Categories:

Leave a comment