Dapatkah PowerShell 1.0 membuat tautan keras dan lunak analog dengan variasi Unix?
Jika ini bukan bawaan, dapatkah seseorang mengarahkan saya ke situs yang memiliki skrip ps1 yang meniru ini?
Ini adalah fungsi yang diperlukan dari shell yang bagus, IMHO. :)
powershell
symlink
Mike T
sumber
sumber
New-Item -Type
dan tekan tab untuk menelusuri opsi.Hardlink
,,SymbolicLink
danJunction
muncul untukku. Bekerja dengan Win 10, Server 2016+, atau OS yang lebih lama dengan Powershell 5.0+ diinstal melalui Windows Management Framework 5.0+.New-Item -Type HardLink
maupunNew-Item -Type SymbolicLink
. Tautan dokumen Item Baruhelp about_Providers
, ini menyarankan Anda membaca bantuan untuk setiap penyedia (yang tidak ditautkan). Tetapi jika Anda google ada banyak buzz di komunitas PowerShell sekitarNew-Item -Type HardLink
. Sepertinya tim teknik PowerShell telah datang dengan titik ekstensi penyedia yang membingungkan tim dokumentasi.Jawaban:
Anda dapat memanggil yang
mklink
disediakan olehcmd
, dari PowerShell untuk membuat tautan simbolik:Anda harus lulus
/d
untukmklink
jika target adalah sebuah direktori.Untuk tautan keras, saya sarankan sesuatu seperti Sysinternals Junction .
sumber
function mklink { cmd /c mklink $args }
New-Item
tidak mendeteksi jika target adalah direktori , tetapiNew-Item
akan gagal jika target tidak ada sedangkan mklink akan membuat tautan simbolik bagaimanapun .Windows 10 (dan Powershell 5.0 secara umum) memungkinkan Anda untuk membuat tautan simbolik melalui cmdlet Item Baru .
Pemakaian:
Atau di profil Anda:
Aktifkan Mode Pengembang untuk tidak memerlukan hak admin saat membuat tautan dengan
New-Item
:sumber
.lnk
pintasan Explorer . Di penjelajah, pintasan dan symlink dari nama yang sama ditampilkan berdampingan seolah-olah tidak ada yang salah. Perilaku mereka agak berbeda; mengikuti symlink menunjukkan jalur absolut di bilah Explorer. Mengikuti pintasan memperlakukannya seolah-olah dir orangtua symlink adalah orangtua yang benar.New-Item
commandlet.Tambahkan modul "pscx"
Tidak, itu tidak dibangun ke dalam PowerShell. Dan
mklink
utilitas tidak dapat dipanggil sendiri di Windows Vista / Windows 7 karena dibangun langsung menjadicmd.exe
"perintah internal" .Anda dapat menggunakan Ekstensi Komunitas PowerShell (gratis). Ada beberapa cmdlet untuk titik reparasi dari berbagai jenis:
New-HardLink
,New-SymLink
,New-Junction
,Remove-ReparsePoint
sumber
New-Item -Type
dan tekan tab untuk menelusuri opsi.Hardlink
,,SymbolicLink
danJunction
muncul untukku. Bekerja Win 10, Server 2016+, atau OS yang lebih lama dengan Powershell 5.0 diinstal melalui Windows Management Framework 5.0+.Di Windows 7, perintahnya adalah
PowerShell menemukannya tanpa path lengkap (c: \ Windows \ system32) atau ekstensi (.exe).
sumber
fsutil hardlink
membutuhkannew-file
danexisting-file
berada di drive yang sama. Jika itu penting bagi Anda, gunakan cmdmklink /c
sebagai gantinya.fsutil
(atau Windows dalam hal ini)Symlink Baru:
Hapus-Symlink:
Pemakaian:
sumber
New-Item -Type
dan tekan tab untuk menelusuri opsi.Hardlink
,,SymbolicLink
danJunction
muncul untukku. Bekerja Win 10, Server 2016+, atau OS yang lebih lama dengan Powershell 5.0 diinstal melalui Windows Management Framework 5.0+.Coba junction.exe
The Junction utilitas baris perintah dari SysInternals membuat membuat dan menghapus persimpangan mudah.
Bacaan lebih lanjut
Microsoft menggunakan "soft link" sebagai nama lain untuk "junction" .
Namun: "tautan simbolik" adalah sesuatu yang sepenuhnya berbeda.
Lihat MSDN: Hard Link dan Sambungan di Windows.
(Ini bertentangan langsung dengan penggunaan umum istilah-istilah di mana "tautan lunak" dan "tautan simbolik" ( "symlink" ) DO memiliki arti yang sama .)
sumber
mklink
yang dikirimkan bersama Windows. Jika Anda memiliki versi Windows yang dikirimkan.Anda dapat menggunakan utilitas ini:
sumber
Saya menulis modul PowerShell yang memiliki pembungkus asli untuk MKLINK. https://gist.github.com/2891103
Termasuk fungsi untuk:
Menangkap output MKLINK dan melemparkan kesalahan PowerShell yang tepat bila perlu.
sumber
Saya menggabungkan dua jawaban (@bviktor dan @jocassid). Itu diuji pada Windows 10 dan Windows Server 2012.
sumber
Sebenarnya, perintah Sysinternals
junction
hanya bekerja dengan direktori (jangan tanya kenapa), jadi tidak bisa menghubungkan file. Saya akan menggunakancmd /c mklink
tautan lunak (Saya tidak tahu mengapa itu tidak didukung langsung oleh PowerShell), ataufsutil
untuk hardlink.Jika Anda membutuhkannya untuk bekerja pada Windows XP, saya tidak tahu apa pun selain Sysinternals
junction
, jadi Anda mungkin terbatas pada direktori.sumber
Saya menemukan ini dengan cara sederhana tanpa bantuan eksternal. Ya, ia menggunakan perintah DOS kuno tetapi berfungsi, mudah, dan jelas.
Ini menggunakan perintah dir DOS untuk menemukan semua entri dengan atribut tautan simbolik, memfilter pada nama tautan spesifik diikuti dengan tanda kurung "[]", dan untuk masing-masing - mungkin satu - mengekstrak hanya string target.
sumber