How to create a Hardlink using the New-Hardlink PowerShell PSCX command
-
19-09-2019 - |
Question
I want to create a new Hardlink with the PowerShell Community Extensions PSCX commandlet New-Hardlink http://pscx.codeplex.com/. I have read the man file and tried almost every combination of commands but it won't work. What am I missing? (I know about fsutil, but I want to use this commandlet/alias)
Here is the directory structure: E:\Source E:\Test
Here are some variations of the command that I have tried:
New-Hardlink E:\Test\Source E:\Source
New-Hardlink -Path:"E:\Test\Source" -Target:"E:\Source"
New-Hardlink E:\Source E:\Test\Source
New-Hardlink E:\Source E:\Test\
New-Hardlink -P:"E:\Source" -T:"E:\Test\Source"
Here is the supposed syntax:
New-Hardlink [-Path] <String> [-Target] <String> [<CommonParameters>]
-Path <String>
Path to the new link.
-Target <String>
Target of the link.
The result is always some from of:
New-Hardlink : Unable to find the file 'E:\Source.
Does this command not work with directories but only with files?
Solution
I will sheepishly answer my own question.
Yes, indeed Hardlinks refer to files. To accomplish this with directories the New-Junction command should be used like so:
New-Junction E:\Test\Dest E:\Source
The first parameter refers to the location you would like to place the new Junction.
The second parameter refers to the directory you wish to Junction
OTHER TIPS
For those coming from Google:
PowerShell 5.0 and above have support for creating Symbolic Links and Junctions using the New-Item
cmdlet.
To create a symbolic link on a file:
Clicking on B.txt will take you to A.txt.
New-Item -ItemType SymbolicLink -Name B.txt -Target A.txt
New-Item -ItemType SymbolicLink -Path C:\Temp\B.txt -Value A.txt
To create a symbolic link on a directory:
New-Item -ItemType SymbolicLink -Name B_Directory -Target C:\A_Directory
New-Item -ItemType HardLink -Path C:\B.txt -Value C:\A.txt
To create a junction on a directory:
New-Item -ItemType Junction -Path C:\Junction -Value C:\A_Directory