Symbolic Link, Hard Link e Junction Point com PowerShell

Pessoal,
Dúvida bem interessante vinda de um espectador da minha palestra de Powershell para DBAs SQL Server no último SQL Saturday de Brasília sobre como manusear links simbólicos com o PowerShell.
Eu utilizo um script de profile para o PowerShell que cria alguns links simbólicos (talvez isso seja uma herança da minha época de Linux).
No Windows link simbólico é um atalho, um nome encurtado para acessar um diretório ou um arquivo. Na visualização das pastas no Windows Explorer aparece a setinha azul indicando que é um link, desta maneira não duplica o conteúdo.
Ainda temos o Hard Link que uma representação de um arquivo e não um atalho. Qualquer alteração feita nas suas entradas irá refletir em todos os pontos representados.
É muito utilizado em bibliotecas de desenvolvimento, quando precisamos ter um arquivo em um diretório e a duplicação deste em outro diretório. Ou seja, para não existir duas versões podemos criar um Hard Link.
E o último método de link é o Junction Point que é um Hard Link para diretórios.
Eu sei que você pensou em algumas soluções com estes dois últimos exemplos, mas eles não funcionam com arquivos remotos. :/
Enfim, dúvida que gerou esta explicação era como criar um link simbólico e remover ele utilizando o PowerShell.
O código abaixo, faz o teste se o link simbólico do meu diretório Documents existe na minha unidade C: com o nome de doc, senão existir ele irá criar.

if (!(Test-Path -Path c:\doc )) {
Write-Host "Nao"
new-Item -ItemType SymbolicLink -Name doc -target 'C:\Users\sqlcr\OneDrive\Documents'
}else {
(Get-Item -Path c:\doc).Delete(0)
}

Os exemplos a seguir são referentes ao HardLink e a Junction Point:

#Cria um HardLink
New-Item -ItemType HardLink -Value C:\scripts\vms.ps1  -Path c:\x.ps1
#Remove o HardLink
Remove-Item x.ps1
#Cria um Junction
New-Item -ItemType Junction -Value C:\scripts -Path C:\scripts2
#Remove a Junction
Remove-Item .\scripts2 -Force

É isso aí Pessoal! Espero que este post seja útil para você.
Abraço, Rodrigo

Um comentário em “Symbolic Link, Hard Link e Junction Point com PowerShell

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.