[powershell] PowerShell을 사용하여 하드 링크와 소프트 링크 만들기

PowerShell 1.0에서 Unix와 유사한 하드 및 소프트 링크를 만들 수 있습니까?

이것이 내장되어 있지 않으면 누군가 이것을 모방하는 ps1 스크립트가있는 사이트를 가리킬 수 있습니까?

이것은 훌륭한 쉘 IMHO의 필수 기능입니다. 🙂



답변

PowerShell에서 mklink제공 한을 호출하여 cmd기호 링크를 만들 수 있습니다.

cmd /c mklink c:\path\to\symlink c:\target\file

당신은 통과해야 /dmklink대상이 디렉토리 인 경우.

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