PowerShell 5.1 no bootstrap · PowerShell 7 preferido · Windows 10/11 x64
Important
Algumas operações alteram arquivos, serviços, Registro, energia ou discos e podem solicitar elevação pelo UAC. Leia os resumos e confirmações exibidos antes de continuar.
O Sync Master reúne rotinas administrativas e de engenharia em um menu único. O projeto usa recursos nativos do Windows sempre que possível e separa as funcionalidades em módulos PowerShell testáveis.
| Área | Recursos principais |
|---|---|
| Sincronização | Simulação, cópia unilateral segura, espelhamento, exclusões de perfil e agendamento |
| Backup | Criação e restauração segura de arquivos ZIP |
| Arquivos | Duplicados, hashes, integridade e permissões |
| Sistema | Medição antes/depois, limpeza, inicialização, energia, armazenamento, Defender e reparo |
| Hardware | CPU, memória, discos, SMART e monitoramento em tempo real |
| Rede | Ping, portas TCP, ARP, DNS, netstat, Whois e teste de velocidade |
| PowerShell | Detecção, instalação e atualização do PowerShell 7 |
| Windows | Diagnóstico de licenciamento, instalação de chave e ativação oficial |
Escolha uma das duas formas abaixo.
git clone https://github.com/Codyte/Sync.git
Set-Location .\Sync
& '.\Sync Master.cmd'Depois, você também pode iniciar o programa clicando duas vezes em Sync Master.cmd.
irm https://raw.githubusercontent.com/Codyte/Sync/master/install.ps1 | iexEsse comando instala em %LOCALAPPDATA%\SyncMaster\App e abre o launcher. Nas próximas execuções, ele prefere a release estável mais recente, repete falhas transitórias de rede e confere tamanho e SHA256 do asset SyncMaster.zip publicados pela API do GitHub antes de atualizar. A versão anterior fica em %LOCALAPPDATA%\SyncMaster\App.previous e é restaurada se o novo launcher não puder ser iniciado. Enquanto ainda não houver nenhuma release, o bootstrap usa temporariamente um ZIP preso ao commit exato da master. Configurações e logs não são apagados.
URL equivalente usando o domínio github.com:
irm https://github.com/Codyte/Sync/raw/refs/heads/master/install.ps1 | iexCaution
irm ... | iex executa imediatamente o conteúdo recebido da internet. Se preferir inspecionar o instalador antes, use a forma em duas etapas:
irm https://raw.githubusercontent.com/Codyte/Sync/master/install.ps1 -OutFile $env:TEMP\SyncMaster-install.ps1
& $env:TEMP\SyncMaster-install.ps1Nos dois métodos, o launcher abre o menu como administrador e, quando possível, relança automaticamente no PowerShell 7.
O Windows PowerShell 5.1 já acompanha o Windows e é suficiente para iniciar o bootstrap. O PowerShell 7 é recomendado para o funcionamento completo.
Se ele não estiver instalado, o Sync Master tenta, nesta ordem:
- WinGet;
- MSI oficial com assinatura Microsoft validada;
- ZIP oficial versionado no perfil do usuário, depois de validar URL, tamanho e SHA256 publicados pelo GitHub.
O terceiro método não exige privilégios administrativos e não executa outro script remoto. Depois da instalação, o launcher localiza o pwsh.exe mesmo antes de o PATH da sessão ser atualizado.
Também é possível instalar pela Microsoft Store. Depois da instalação, feche e abra novamente o Sync Master.
Note
A versão da Store é instalada por usuário. Para tarefas agendadas executadas como SYSTEM, o Sync Master usa o Windows PowerShell 5.1 quando não encontra uma instalação de sistema do PowerShell 7.
A opção APP resolve o comando Invoke-ps2exe do módulo instalado, sem depender de uma pasta versionada. Instale o módulo uma vez no perfil do usuário:
Install-Module PS2EXE -Scope CurrentUserO executável anterior só é substituído depois que o conversor cria uma nova saída válida.
pwsh -NoProfile -ExecutionPolicy Bypass -File .\Sync_Master.ps1O menu interativo exige privilégios de administrador porque reúne operações que modificam configurações do sistema.
pwsh -NoProfile -ExecutionPolicy Bypass -File .\Sync_Master.ps1 `
-Acao Sincronizar `
-Origem 'C:\Dados' `
-Destino 'D:\Backup' `
-Modo UnilateralO modo automatizado não abre prompts e pode ser usado pelo Agendador de Tarefas.
Warning
O modo Bilateral executa espelhamento nos dois sentidos e pode excluir dados no destino. Faça uma simulação ou backup antes de usá-lo.
Para disponibilizar Start-SyncMaster em qualquer pasta:
.\Install-SyncMaster.ps1
Start-SyncMasterInstalação para todos os usuários, em uma sessão elevada:
.\Install-SyncMaster.ps1 -Scope AllUsersDesinstalação:
.\Install-SyncMaster.ps1 -UninstallConfigurações, backups auxiliares e logs ficam fora do repositório:
%LOCALAPPDATA%\SyncMaster\
├── Logs\
├── Backups\
├── Reports\Performance\
└── diretorios.json
Cada execução interativa tenta criar um transcript em Logs\sessao_AAAA-MM-DD_HH-mm-ss.log. Para diagnóstico em outra máquina, envie o transcript mais recente junto com uma captura do erro.
O menu de desempenho salva snapshots JSON em Reports\Performance. Compare dois estados coletados em condições semelhantes para verificar o efeito real de uma mudança. CPU e memória variam com a carga; um único valor isolado não prova ganho.
As ações de desempenho usam mecanismos documentados do Windows: gerenciamento reversível de inicialização, Optimize-Volume, planos nativos do powercfg, relatórios de energia/bateria, Quick Scan e analisador de desempenho do Microsoft Defender. Atualizações, Sensor de Armazenamento, apps em segundo plano, efeitos visuais e GPU são abertos nas configurações oficiais para decisão do usuário; o Sync Master não instala atualizações, remove apps, cria exclusões do Defender nem altera automaticamente o arquivo de paginação.
Documentação de referência:
- Dicas da Microsoft para melhorar o desempenho do Windows
Optimize-Volumepowercfge seus relatórios- Analisador de desempenho do Microsoft Defender
- Esquema oficial
ms-settings: - Funcionamento do arquivo de paginação
- O MSI baixado pelo bootstrap só é executado quando possui assinatura Authenticode válida da Microsoft.
- Releases do Sync Master usam um asset de nome fixo e o SHA256 informado pela API do GitHub.
- Ações destrutivas importantes exigem confirmação no modo interativo.
- O modo de sincronização unilateral não usa
/MIR. - Downloads automáticos ficam limitados ao instalador do próprio projeto, aos canais oficiais do PowerShell e, com confirmação, ao pacote exato
Ookla.Speedtest.CLIvia WinGet. - Não execute o projeto a partir de um ZIP sem extrair todos os arquivos.
Sync/
├── install.ps1 # bootstrap para instalação via IRM
├── Sync Master.cmd # entrada para duplo clique
├── Sync_Master.ps1 # launcher e menu principal
├── SyncMaster.psd1 # manifesto do módulo
├── Install-SyncMaster.ps1 # instalação opcional como módulo
├── .github/workflows/release.yml # publica SyncMaster.zip ao receber uma tag v*
├── modules/ # funcionalidades por domínio
├── tests/ # testes Pester
└── tools/ # lint, testes e hooks locais
A análise estática e o gerador de árvore de fluxo possuem documentação própria.
Dependências de desenvolvimento:
Install-Module Pester -MinimumVersion 5.0 -Scope CurrentUser
Install-Module PSScriptAnalyzer -Scope CurrentUserExecute o gate completo:
pwsh -NoProfile -ExecutionPolicy Bypass -File .\tools\Run-Checks.ps1O gate executa PSScriptAnalyzer e todos os testes Pester. Para também reprovar warnings de lint:
.\tools\Run-Checks.ps1 -FailOnWarningAtive uma vez Settings → General → Releases → Enable release immutability no repositório. Depois publique uma tag versionada:
git tag v1.0.0
git push origin v1.0.0O workflow cria automaticamente SyncMaster.zip; o instalador passa a seguir essa release em vez da master.
PowerShell 7 não foi encontrado
Confirme se o comando está disponível:
Get-Command pwsh -ErrorAction SilentlyContinueSe acabou de instalar pela Store, feche o terminal e execute novamente. Verifique também se o alias de execução pwsh.exe está habilitado nas configurações do Windows.
WinGet não foi encontrado
Atualize ou instale o App Installer pela Microsoft Store. O bootstrap ainda tentará os métodos oficiais alternativos.
Falha ao carregar módulos
Garanta que Sync_Master.ps1, SyncMaster.psd1 e a pasta modules permaneçam juntos. Extraia o ZIP inteiro antes de executar.
Preciso enviar um erro
Inclua a mensagem completa, a versão do Windows e do PowerShell e o arquivo mais recente de:
%LOCALAPPDATA%\SyncMaster\Logs\sessao_*.log
Desenvolvido por Eng. Carlos Ortiz · Codyte