O PowerShell 1.0 pode criar links físicos e físicos análogos à variedade Unix?
Se isso não estiver embutido, alguém pode me indicar um site que possua um script ps1 que imite isso?
Esta é uma função necessária de qualquer bom shell, IMHO. :)
powershell
symlink
Mike T
fonte
fonte
New-Item -Type
e pressione tab para percorrer as opções.Hardlink
,SymbolicLink
EJunction
aparecer para mim. Funciona com sistema operacional Win 10, Server 2016+ ou anterior, com o Powershell 5.0+ instalado via Windows Management Framework 5.0+.New-Item -Type HardLink
nemNew-Item -Type SymbolicLink
. Os documentos de novos itens vinculam ahelp about_Providers
, sugere que você leia a ajuda de cada provedor (que não está vinculado). Mas se você pesquisar no Google, há bastante burburinho na comunidade do PowerShellNew-Item -Type HardLink
. Parece que a equipe de engenharia do PowerShell criou pontos de extensão de provedor que atrapalham a equipe de documentos.Respostas:
Você pode chamar o
mklink
fornecido porcmd
, do PowerShell para criar links simbólicos:Você deve passar
/d
paramklink
se o destino for um diretório.Para links físicos, sugiro algo como Sysinternals Junction .
fonte
function mklink { cmd /c mklink $args }
New-Item
detectará se o destino é um diretório , masNew-Item
falhará se o destino não existir, enquanto o mklink criará o link simbólico independentemente .O Windows 10 (e o Powershell 5.0 em geral) permite criar links simbólicos por meio do cmdlet New-Item .
Uso:
Ou no seu perfil:
Ative o Modo de desenvolvedor para não exigir privilégios de administrador ao criar links com
New-Item
:fonte
.lnk
atalho do Explorer . No explorer, um atalho e link simbólico do mesmo nome são exibidos lado a lado como se nada estivesse errado. Seus comportamentos são sutilmente diferentes; seguindo o link simbólico mostra o caminho absoluto na barra do Explorer. Após o atalho, trata-o como se o diretório principal do link simbólico fosse o verdadeiro pai.New-Item
comando.Adicione o módulo "pscx"
Não, ele não está incorporado no PowerShell. E o
mklink
utilitário não pode ser chamado por si só no Windows Vista / Windows 7, porque ele é incorporado diretamentecmd.exe
como um "comando interno" .Você pode usar as extensões da comunidade do PowerShell (grátis). Existem vários cmdlets para pontos de nova análise de vários tipos:
New-HardLink
,New-SymLink
,New-Junction
,Remove-ReparsePoint
fonte
New-Item -Type
e pressione tab para percorrer as opções.Hardlink
,SymbolicLink
EJunction
aparecer para mim. Funciona com sistema operacional Win 10, Server 2016+ ou anterior, com o Powershell 5.0 instalado via Windows Management Framework 5.0+.No Windows 7, o comando é
O PowerShell o encontra sem o caminho completo (c: \ Windows \ system32) ou a extensão (.exe).
fonte
fsutil hardlink
requernew-file
eexisting-file
estar na mesma unidade. Se isso for importante para você, use os cmd'smklink /c
.fsutil
(ou o Windows para esse efeito)Novo link simbólico:
Remove-Symlink:
Uso:
fonte
New-Item -Type
e pressione tab para percorrer as opções.Hardlink
,SymbolicLink
EJunction
aparecer para mim. Funciona com sistema operacional Win 10, Server 2016+ ou anterior, com o Powershell 5.0 instalado via Windows Management Framework 5.0+.Tente junction.exe
O utilitário de linha de comando Junction da SysInternals facilita a criação e a exclusão de junções.
Leitura adicional
Microsoft usa "soft link" como outro nome para "junção" .
No entanto: um "link simbólico" é algo totalmente diferente.
Consulte MSDN: Links físicos e junções no Windows.
(Isso está em contradição direta com o uso geral dos termos em que "link virtual" e "link simbólico" ( "link simbólico" ) significam a mesma coisa .)
fonte
mklink
que é fornecido com o Windows. Se você possui uma versão do Windows com a qual ela é fornecida.Você pode usar este utilitário:
fonte
Eu escrevi um módulo do PowerShell que possui invólucros nativos para o MKLINK. https://gist.github.com/2891103
Inclui funções para:
Captura a saída MKLINK e gera erros adequados do PowerShell quando necessário.
fonte
Combinei duas respostas (@bviktor e @jocassid). Foi testado no Windows 10 e Windows Server 2012.
fonte
Na verdade, o comando Sysinternals
junction
funciona apenas com diretórios (não me pergunte por que), portanto, não pode vincular arquivos. Eu usariacmd /c mklink
links flexíveis (não consigo entender por que ele não é suportado diretamente pelo PowerShell) oufsutil
para hardlinks.Se você precisar que ele funcione no Windows XP, não conheço outra coisa senão a Sysinternals
junction
; portanto, você pode estar limitado a diretórios.fonte
Achei isso da maneira mais simples, sem ajuda externa. Sim, ele usa um comando arcaico do DOS, mas funciona, é fácil e é claro.
Isso usa o comando dir do DOS para encontrar todas as entradas com o atributo de link simbólico, filtros no nome do link específico seguido pelos colchetes de destino "[]" e para cada um - presumivelmente um - extrai apenas a string de destino.
fonte