PowerShell 1.0에서 Unix와 유사한 하드 및 소프트 링크를 만들 수 있습니까?
이것이 내장되어 있지 않으면 누군가 이것을 모방하는 ps1 스크립트가있는 사이트를 가리킬 수 있습니까?
이것은 훌륭한 쉘 IMHO의 필수 기능입니다. 🙂
답변
PowerShell에서 mklink
제공 한을 호출하여 cmd
기호 링크를 만들 수 있습니다.
cmd /c mklink c:\path\to\symlink c:\target\file
당신은 통과해야 /d
에 mklink
대상이 디렉토리 인 경우.
cmd /c mklink /d c:\path\to\symlink c:\target\directory
하드 링크의 경우 Sysinternals Junction 과 같은 것을 제안합니다 .
답변
Windows 10 (및 일반적으로 Powershell 5.0)을 사용하면 New-Item cmdlet을 통해 심볼릭 링크를 만들 수 있습니다 .
용법:
New-Item -Path C:\LinkDir -ItemType SymbolicLink -Value F:\RealDir
또는 프로필에서 :
function make-link ($target, $link) {
New-Item -Path $link -ItemType SymbolicLink -Value $target
}
다음 과 링크 할 때 관리자 권한을 요구하지 않도록 개발자 모드 를 켜십시오 New-Item
.
답변
“pscx”모듈 추가
아니요, PowerShell에 기본 제공되지 않습니다. 또한 mklink
유틸리티 는 “내부 명령”으로 직접 내장되어 cmd.exe
있으므로 Windows Vista / Windows 7에서 자체적으로 호출 할 수 없습니다 .
PowerShell 커뮤니티 확장 (무료)을 사용할 수 있습니다 . 다양한 유형의 재분석 지점에 대한 몇 가지 cmdlet이 있습니다.
New-HardLink
,New-SymLink
,New-Junction
,Remove-ReparsePoint
- 다른 사람.
답변
Windows 7에서 명령은
fsutil hardlink create new-file existing-file
PowerShell은 전체 경로 (c : \ Windows \ system32) 또는 확장명 (.exe)없이 파일을 찾습니다.
답변
새로운 심볼릭 링크 :
Function New-SymLink ($link, $target)
{
if (test-path -pathtype container $target)
{
$command = "cmd /c mklink /d"
}
else
{
$command = "cmd /c mklink"
}
invoke-expression "$command $link $target"
}
심볼릭 링크 제거 :
Function Remove-SymLink ($link)
{
if (test-path -pathtype container $link)
{
$command = "cmd /c rmdir"
}
else
{
$command = "cmd /c del"
}
invoke-expression "$command $link"
}
용법:
New-Symlink "c:\foo\bar" "c:\foo\baz"
Remove-Symlink "c:\foo\bar"
답변
junction.exe를 사용해보십시오
정션SysInternals 명령 행 유틸리티를 사용하면 junction을 쉽게 작성하고 삭제할 수 있습니다.
추가 자료
- MS 용어 : soft! = 기호
Microsoft는 “소프트 링크” 를 “junction”의 다른 이름으로 사용합니다 .
그러나 “기호 링크” 는 완전히 다른 것입니다.
MSDN : Windows의 하드 링크 및 접합 을 참조하십시오 .
“이것은 “소프트 링크 “ 와 “기호 링크 “ ( “symlink “ ) 가 동일한 것을 의미 하는 용어의 일반적인 사용법과는 모순됩니다 .)
답변
이 유틸리티를 사용할 수 있습니다 :
c:\Windows\system32\fsutil.exe create hardlink