Home Artigos Windows Server League Automatizando Tarefas com o Windows PowerShell 3.0

Automatizando Tarefas com o Windows PowerShell 3.0

logo-POSH-100x100Alguns recursos do Windows PowerShell facilitam o gerenciamento e a criação de scripts para automação de tarefas seja em sua máquina local ou remota.

Neste artigo você encontrará códigos de script do PowerShell com comentários para facilitar o entendimento.
A primeira é Job Scheduling que permite agendar a execução de um trabalho (job) do PowerShell em Background e ainda suporta diversos gatilhos (triggers).



 



 

Exemplo de triggers


$diario = New-JobTrigger -Daily -at 3am

$umavez = New-JobTrigger -Once -At (Get-Date).AddHours(1)

$semanal = New-JobTrigger -Weekly -DaysOfWeek Monday -At 6pm

 

Com o Job Scheduling você executa comandos de acordo com o agendamento ou em resposta a um evento.

Exemplos de Job Scheduling

Register-ScheduledJob -Name BackupDiario -Trigger $diario -ScriptBlock {Copy-Item C:\scripts f:\backup\bkp$((Get-Date).ToFileTime()) -Recurse -Force}

Register-ScheduledJob -Name RelatorioSemanal -Trigger $semanal -FilePath C:\scripts\Odata\View-OData.ps1

 

Utilizando  Job Scheduling em conjunto com as sessões remotas do PowerShell temos mais um recurso resiliente para automatização, pois caso existam falhas nas conexões de rede as sessões remotas permanecem em um estado "conectada" durante falhas de rede e após 4 minutos, sessões remotas alternam automaticamente para um novo estado "Desconectada"

Com os comandos persistentes e Jobs os scripts podem continuar a funcionar mesmo se a sessão estiver desconectada. E não é só em caso de falhas. Pois você pode criar uma sessão remota e então desconectar e quando pode se reconectar a uma sessão desconectada quando desejar.

Exemplo de uma sessão remota:

# Criando uma sessão no servidor

$s = New-PSSession -name install -ComputerName localhost 

 

# Executando um comando remoto como um trabalho

Invoke-Command -Session $s -ScriptBlock {

1..1000000 | % {"Contando $_";sleep 1 }

} -AsJob -JobName LongoTrabalho

 

Get-Job -Name LongoTrabalho | Receive-Job -Keep

 

# Desconectando da sessão atual

Disconnect-PSSession $s

 

# Reconectando quando quiser

Get-PSSession -ComputerName . -Name Install | Connect-PSSession

$s

 

Receive-PSSession -Session $s -OutTarget Job -JobName LongoTrabalho

Get-Job LongoTrabalho | Receive-Job -Keep

 

 

Depois temos o Workflow, Um workflow funciona como se fosse um cmdlet do PowerShell, com a diferença de fazer o uso do Windows Workflow Foundation que habilita a criação de scripts de longa execução gerenciáveis. Usando um Workflow você pode Interromper, suspender, reiniciar, repetir e fazer execução paralela, o que o torna uma excelente ferramenta em ambientes de computação em nuvem, já que permite aos administradores automatizarem tarefas de execução diária e repetidas. Workflow suporta interrupções de maquinas e rede, como por exemplo a reinicialização de um servidor.

Exemplo de um WorkFlow

# um Trabalho executando um WorkFlow

workflow MeuWorkFlow

{

while(1)

{

(get-date).ToString() + " Script Demorado"

Start-Sleep -seconds 3

}

}

 

#invokar o comando como um trabaho (JOB)

$wfjob = MeuWorkFlow -AsJob

 

# Consulte e use o WFjob E não se esqueça de consular os cmdlets *-job.- workflow é gerenciando com job

$wfjob

Receive-Job $wfjob

 

# Você então pode suspender o trabalho e notar que ele não exibe informações, pois está suspenso.

Suspend-Job $wfjob -Force -Wait

$wfjob

Receive-Job $wfjob

 

# Por fim você pode resumir o trabalho.

Resume-Job $wfjob -Wait

 

# Finalizar o trabalho !!

Get-Job | Remove-Job -Force

 

 

 

 

Este post é oferecido por Microsoft Windows
Para mais informações sobre o Windows Server 2012, acesse: http://clk.atdmt.com/MBL/go/425208471/direct/01/





 



   

Última atualização (Seg, 27 de Maio de 2013 14:54)

 


Artigos relacionados:

Powered By relatedArticle

World's Top Web Hosting providers awarded and reviewed. Find a reliable green hosting service, read greengeeks review