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

Autor: SQLCrespi

Rodrigo Crespi é MVP Data Platform, MCT, MCSE, MCSA, MCIT, MCDBA e MCP em SQL Server, possuí outras certificações em .NET Framework, Dynamics CRM e etc. Iniciou trabalhando com SQL Server na versão 6.5 na época como desenvolvedor, logo direcionou a sua carreira para a área de administração de bancos de dados. Atualmente é Sócio da CrespiDB – Soluções em Plataformas de Dados, além de professor universitário na Uniftec – Caxias do Sul Autor de diversos artigos publicados em sites e revistas sobre SQL Server e engenharia de software, mantem o canal SQLCrespi no Youtube, o blog SQLCrespi, além de ser dedicado ao SQL Server RS PASS Chapter Leader do grupo de profissionais em SQL Server do Rio Grande do Sul.

One thought on “Symbolic Link, Hard Link e Junction Point com PowerShell

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s