Olá pessoal, tudo bem? Espero que sim!
Venho mais uma vez compartilhar um script com vocês. O script da vez realiza algo que os Sysadmin’s pelo mundo fazem rotineiramente: Reiniciar Servidores ou Computadores. Atualmente possuímos diversas ferramentas que nos auxiliam na orquestração da reinicialização de servidores e computadores, mas, acontece eventualmente de precisarmos realizar esta operação sob demanda. Este script irá lhe auxiliar a reiniciar um, mais de um ou uma lista de servidores ou computadores de uma vez, utilizando o método Reboot disponível na classe WMI Win32_OperatingSystems.
Neste script, utilizei alguns dos componentes e operadores já abordados aqui como o Funções, Parâmetros, Variávels, If, Else e, recentemente, o ForEach. Procurem analisar como eu estruturei cada etapa, condicionando o script a seguir ao caminho adequado conforme a parametrização e capturar as informações necessárias para gerar as mensagens de retorno no host da console do Powershell.
Reiniciar Servidores e Computadores Remotamente Sob Demanda
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
<# raphaelgomes.net .SYNOPSIS Este script permite que você reinicie remotamente um servidor ou computador por WMI. .AUTHOR Raphael Gomes - contato@raphaelgomes.net .FILENAME Restart-OnDemand.ps1 .PARAMETER Servidores Reiniciar um ou mais servidores remotos .\Restart-OnDemand.ps1 -Servidores <servidor1>,<servidor2>,<servidor3>,... .EXAMPLE .\Restart-OnDemand.ps1 -Servidores SERVER1 .EXAMPLE .\Restart-OnDemand.ps1 -Servidores SERVER1, SERVER2, SERVER3, SERVERN .PARAMETER CaminhoListaServidores Importa um arquivo de texto ou CSV com cada servidor em uma linha e reinicia cada servidor por vez .\Restart-OnDemand.ps1 -CaminhoListaServidores <caminho do arquivo com a lista de servidores> .EXAMPLE .\Restart-OnDemand.ps1 -CaminhoRelatorios "C:\Users\RobotChicken\Desktop\servidores.txt" .PARAMETER Credencial Adiciona uma credencial com permissão de acesso ao(s) servidor(es) destino .\Restart-OnDemand.ps1 -Servidores SERVER1 -Credencial <DOMINIO>\<USUÁRIO> .EXAMPLE .\Restart-OnDemand.ps1 -Servidores KEPLER1, KEPLER2 -Credencial "DSN\GlobalAdmin" .EXAMPLE .\Restart-OnDemand.ps1 -CaminhoRelatorios "C:\Users\RobotChicken\Desktop\servidores.txt" -Credencial "DSN\GlobalAdmin" .LINK Dúvidas? Comente em: https://raphaelgomes.net/ps-script-3-reiniciar-servidores-ou-computadores-remotamente #> Param([array]$Servidores, [string]$CaminhoListaServidores, [System.Management.Automation.PSCredential]$Credencial) If($CaminhoListaServidores){ Write-Host -ForegroundColor Yellow "Importando lista de servidores..." $Servidores = Get-Content $CaminhoListaServidores ForEach ($servidor in $Servidores){ Write-Host -ForegroundColor Yellow "Conectando ao servidor: $servidor..." # Conectando ao namespace por WMI If($Credencial){ $ConsultaWMI = Get-WmiObject -Class Win32_OperatingSystem -Credential $Credencial -Namespace root\cimv2 -ComputerName $servidor -EnableAllPrivileges -ErrorAction SilentlyContinue -ErrorVariable Err If($Err){ Write-Host -ForegroundColor Red "Não foi possível se conectar ao servidor:"$servidor Clear-Variable Err } } Else{ $ConsultaWMI = Get-WmiObject -Class Win32_OperatingSystem -Namespace root\cimv2 -ComputerName $servidor -EnableAllPrivileges -ErrorAction SilentlyContinue -ErrorVariable Err If($Err){ Write-Host -ForegroundColor Red "Não foi possível se conectar ao servidor:"$servidor Clear-Variable Err } } # Reiniciar Servidor $ConsultaWMI.Reboot() Write-Host -ForegroundColor Green "Reiniciado o servidor: $servidor..." } } Else{ ForEach ($servidor in $Servidores){ Write-Host -ForegroundColor Yellow "Conectando ao servidor: $servidor..." # Conectando ao namespace por WMI If($Credencial){ $ConsultaWMI = Get-WmiObject -Class Win32_OperatingSystem -Credential $Credencial -Namespace root\cimv2 -ComputerName $servidor -EnableAllPrivileges -ErrorAction SilentlyContinue -ErrorVariable Err If($Err){ Write-Host -ForegroundColor Red "Não foi possível se conectar ao servidor:"$servidor Clear-Variable Err } } Else{ $ConsultaWMI = Get-WmiObject -Class Win32_OperatingSystem -Namespace root\cimv2 -ComputerName $servidor -EnableAllPrivileges -ErrorAction SilentlyContinue -ErrorVariable Err If($Err){ Write-Host -ForegroundColor Red "Não foi possível se conectar ao servidor:"$servidor Clear-Variable Err } } # Reiniciar Servidor $ConsultaWMI.Reboot() Write-Host -ForegroundColor Green "Reiniciando o servidor: $servidor..." } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
<# raphaelgomes.net .SYNOPSIS Esta função permite que você reinicie remotamente um servidor ou computador por WMI. .AUTHOR Raphael Gomes - contato@raphaelgomes.net .FILENAME Restart-OnDemand.psm1 .USAGE Importar a função para o PowerShell Import-Module .\Restart-OnDemand.psm1 .PARAMETER Servidores Reiniciar um ou mais servidores remotos Restart-OnDemand -Servidores <servidor1>,<servidor2>,<servidor3>,... .EXAMPLE Restart-OnDemand -Servidores SERVER1 .EXAMPLE Restart-OnDemand -Servidores SERVER1, SERVER2, SERVER3, SERVERN .PARAMETER CaminhoListaServidores Importa um arquivo de texto ou CSV com cada servidor em uma linha e reinicia cada servidor por vez Restart-OnDemand -CaminhoListaServidores <caminho do arquivo com a lista de servidores> .EXAMPLE Restart-OnDemand -CaminhoRelatorios "C:\Users\RobotChicken\Desktop\servidores.txt" .PARAMETER Credencial Adiciona uma credencial com permissão de acesso ao(s) servidor(es) destino Restart-OnDemand -Servidores SERVER1 -Credencial <DOMINIO>\<USUÁRIO> .EXAMPLE Restart-OnDemand -Servidores KEPLER1, KEPLER2 -Credencial "DSN\GlobalAdmin" .EXAMPLE Restart-OnDemand -CaminhoRelatorios "C:\Users\RobotChicken\Desktop\servidores.txt" -Credencial "DSN\GlobalAdmin" .LINK Dúvidas? Comente em: https://raphaelgomes.net/ps-script-3-reiniciar-servidores-ou-computadores-remotamente #> Function Restart-OnDemand{Param([array]$Servidores, [string]$CaminhoListaServidores, [System.Management.Automation.PSCredential]$Credencial) If($CaminhoListaServidores){ Write-Host -ForegroundColor Yellow "Importando lista de servidores..." $Servidores = Get-Content $CaminhoListaServidores ForEach ($servidor in $Servidores){ Write-Host -ForegroundColor Yellow "Conectando ao servidor: $servidor..." # Conectando ao namespace por WMI If($Credencial){ $ConsultaWMI = Get-WmiObject -Class Win32_OperatingSystem -Credential $Credencial -Namespace root\cimv2 -ComputerName $servidor -EnableAllPrivileges -ErrorAction SilentlyContinue -ErrorVariable Err If($Err){ Write-Host -ForegroundColor Red "Não foi possível se conectar ao servidor:"$servidor Clear-Variable Err } } Else{ $ConsultaWMI = Get-WmiObject -Class Win32_OperatingSystem -Namespace root\cimv2 -ComputerName $servidor -EnableAllPrivileges -ErrorAction SilentlyContinue -ErrorVariable Err If($Err){ Write-Host -ForegroundColor Red "Não foi possível se conectar ao servidor:"$servidor Clear-Variable Err } } # Reiniciar Servidor $ConsultaWMI.Reboot() Write-Host -ForegroundColor Green "Reiniciado o servidor: $servidor..." } } Else{ ForEach ($servidor in $Servidores){ Write-Host -ForegroundColor Yellow "Conectando ao servidor: $servidor..." # Conectando ao namespace por WMI If($Credencial){ $ConsultaWMI = Get-WmiObject -Class Win32_OperatingSystem -Credential $Credencial -Namespace root\cimv2 -ComputerName $servidor -EnableAllPrivileges -ErrorAction SilentlyContinue -ErrorVariable Err If($Err){ Write-Host -ForegroundColor Red "Não foi possível se conectar ao servidor:"$servidor Clear-Variable Err } } Else{ $ConsultaWMI = Get-WmiObject -Class Win32_OperatingSystem -Namespace root\cimv2 -ComputerName $servidor -EnableAllPrivileges -ErrorAction SilentlyContinue -ErrorVariable Err If($Err){ Write-Host -ForegroundColor Red "Não foi possível se conectar ao servidor:"$servidor Clear-Variable Err } } # Reiniciar Servidor $ConsultaWMI.Reboot() Write-Host -ForegroundColor Green "Reiniciando o servidor: $servidor..." } } } |
É isso aí galera, por hoje é só. Até o próximo post!
Dúvidas, sugestões, críticas sobre o blog? Entre em contato aqui!
Gostou? Deixe seu comentário e não se esqueçam de curtir a página do Facebook na barra lateral!