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”