BlackTDN Search

quarta-feira, 7 de janeiro de 2009

Windows® PowerShell® "Script" para sincronização do Repositório do Protheus

Hoje Postarei uma dica de como criar um "script", utilizando o Windows® PowerShell® para sincronizar os "Repositórios de Objetos" do Protheus entre o ambiente de desenvolvimento e o de produção.

Crie o arquivo syncApos.ps1 e, utilizando um editor de texto de sua preferência (Notepad, Notepad++ ou Edit, etc.), inclua o código abaixo. Altere o "Path" <$path>, a "string" de busca <$find>, a "string" de substituição <$replace>,o caminho de onde o repositório deverá ser copiado e o diretório de destino do repositório para adequar às suas necessidades.

Para maiores informações de como instalar o Windows® PowerShell® e de como executar "scripts" leia o "Post" Conexão automática ao Claro3G.

Tendo feito isso basta criar um agendamento utilizando o Agendador de Tarefas do Windows® ("Task Manager") e seus repositórios serão sincronizados.

Obs.: Para que o "script" possa ser executado no "Task Manager" faz-se necessário informar o caminho completo do programa que irá executá-lo e o "script" a ser executado. Ex.: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\totvs\p10\scripts\syncApos.ps1

Se desejar baixar os "scripts" de exemplo para a sincronização dos "apos/rpos" do Protheus clique nos respectivos links: mp8syncApos.ps1 e p10syncApos.ps1.

$path = "d:\totvs\p10\bin"
$find = "SourcePath=d:\\totvs\\p10\\rpos\\rpo1"
$iniFile = "totvs*.ini"
$match = get-childitem -path $path -include $iniFile -recurse | select-string $find -list
if ( $match -match $find )
{
$replace = "SourcePath=d:\totvs\p10\rpos\rpo2"
cd d:\totvs\p10\rpos\rpo2
xcopy \\100.0.9.125\p10rpo$\rpo1\tttp101.rpo /s /c /y /d
}
else
{
$find = "SourcePath=d:\\totvs\\p10\\rpos\\rpo2"
$replace = "SourcePath=d:\totvs\p10\rpos\rpo1"
cd d:\totvs\p10\rpos\rpo1
xcopy \\100.0.9.125\p10rpo$\rpo1\tttp101.rpo /s /c /y /d
}
get-childitem -path $path -include $iniFile -recurse | select-string $find -list |% { (get-content $_.Path) |% { $_ -replace $find, $replace } | set-content $_.Path }

Nenhum comentário:

Postar um comentário