পাওয়ারশেল ব্যবহার করে শক্ত এবং নরম লিঙ্ক তৈরি করা হচ্ছে


226

পাওয়ারশেল ১.০ কি ইউনিক্স বৈচিত্রের সাথে সাদৃশ্যযুক্ত শক্ত এবং নরম লিঙ্ক তৈরি করতে পারে?

যদি এটি অন্তর্নির্মিত না হয়, তবে কেউ আমাকে এমন কোনও সাইটের দিকে নির্দেশ করতে পারে যেটির PS1 স্ক্রিপ্ট রয়েছে যা এটি অনুকরণ করে?

এটি কোনও ভাল শেল, আইএমএইচওর প্রয়োজনীয় কাজ। :)


6
উইন্ডোজ 10 ব্যবহারকারীগণ স্ট্যাকওভারফ্লো . com/a/34905638/195755 দেখুন । উইন্ডোজ 10 এটা করা হয় বিল্ট-ইন। অনুলিপি / আটকান: New-Item -Type এবং বিকল্পগুলির মধ্যে চক্রে ট্যাব টিপুন। Hardlink, SymbolicLinkএবং Junctionআমার জন্য উপস্থিত। উইন 10, সার্ভার 2016+, বা উইন্ডোজ ম্যানেজমেন্ট ফ্রেমওয়ার্ক 5.0+ এর মাধ্যমে ইনস্টল করা পাওয়ারশেল 5.0+ সহ পুরানো ওএস কাজ করে।
yzorg

2
আমি ন্যায্য MSDN / টেকনেট ডকুমেন্টেশনও খুঁজে পাই New-Item -Type HardLinkনা New-Item -Type SymbolicLink। নতুন আইটেম ডক্স লিঙ্ক করেছে help about_Providers, এটি আপনাকে প্রতিটি সরবরাহকারীর জন্য সহায়তা পড়ার পরামর্শ দেয় (যা লিঙ্কযুক্ত নয়)। তবে আপনি গুগল করলে আশেপাশে পাওয়ারশেল সম্প্রদায়টিতে প্রচুর গুঞ্জন রয়েছে New-Item -Type HardLink। দেখে মনে হচ্ছে পাওয়ারশেল ইঞ্জিনিয়ারিং দলটি সরবরাহকারীর এক্সটেনশন পয়েন্ট নিয়ে এসেছে যা ডক্স দলকে স্ট্যাম্প করে।
yzorg

উত্তর:


253

প্রতীকী লিঙ্কগুলি তৈরি করার জন্য আপনি পাওয়ারশেল থেকে 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

শক্ত লিঙ্কগুলির জন্য, আমি সিসিনটার্নালস জংশনের মতো কিছু প্রস্তাব দিই ।


29
আপনার যদি পাওয়ারশেল প্রোফাইল থাকে তবে আপনি একটি দ্রুত ফাংশনও করতে পারেনfunction mklink { cmd /c mklink $args }
জো ইয়ং

14
এবং আপনি যদি কোনও ডিরেক্টরি লিঙ্ক তৈরি করতে চান তবে কমান্ডটি ir সেমিডি / সি এমক্লিংক / ডি "টুডির" থেকে ডায়ার}
ডেভিডড্রাগন

9
এম কে লিঙ্কে / এইচ প্যারামিটার যুক্ত করা সিসিনটার্নাল জংশনের মতো তৃতীয় পক্ষের প্রোগ্রামের প্রয়োজন ছাড়াই একটি হার্ড লিঙ্ক তৈরি করবে।
ফোপেডুশ

3
আমি মনে করি জোকাসিডের আরও ভাল উত্তর রয়েছে। আইএমএইচও, আমাদের পাওয়ারশেলটি কীভাবে ব্যবহার করা যায় সে সম্পর্কে শেখানোর চেষ্টা করা উচিত, সেমিডি.এক্সএইএস এর মাধ্যমে শোষণ এবং হ্যাকগুলি ব্যবহার করবেন না।
ক্যামেরন ওকেনলিফ


266

উইন্ডোজ 10 (এবং সাধারণভাবে পাওয়ারশেল 5.0) আপনাকে নতুন আইটেমের সেমিডলেট দ্বারা প্রতীকী লিঙ্ক তৈরি করতে দেয় ।

ব্যবহার:

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:

এখানে চিত্র বর্ণনা লিখুন


2
এমএস পুনরায় সাজানো ডকুমেন্টেশনের কারণে এই লিঙ্কটি এখন ভেঙে গেছে। আমি টেকনিক.মাইক্রোসফটি.এইন
অ্যারন টমাস

3
নতুন-আইটেম -পথ সি: \ লিংকডির-আইটেমটাইপ সিম্বলিকলিঙ্ক -ভ্যালু এফ: \ রিয়েলডির
ড্যানিয়েল ফিশার ল্যানিব্যাকন

7
উইন্ডোজ v1703 যেহেতু, এম কে লিঙ্ক লিংক অ্যাকাউন্টকে ছাড়াই সিমলিংক তৈরি করতে দেয়, যদি ডেভেলপার মোড সেটিংসে সক্ষম থাকে, নতুন-আইটেমটি করে না। আশা করি পরের আপডেটে।
পাপো

আকর্ষনীয়। সুতরাং এটি এক্সপ্লোরার .lnkশর্টকাট থেকে বেশ স্বতন্ত্র । এক্সপ্লোরারে, একই শর্টকাট এবং পাশাপাশি একই নামের ডিসপ্লিক সিমলিংক যেন কিছুই ভুল হয় না। তাদের আচরণগুলি সুক্ষভাবে পৃথক; সিমিলিঙ্কটি অনুসরণ করে এক্সপ্লোরার বারে নিখুঁত পথ দেখায়। শর্টকাট অনুসরণ করে এটিকে এমন আচরণ করে যেন সিমলিংক পিতামহীর সত্য পিতা।
বেসজেন

1
সঙ্গে গৃহীত উত্তর , আমি আপেক্ষিক পাথ, যার ক্ষেত্রে ছিল না ব্যবহার করতে সক্ষম ছিল New-Itemcommandlet।
ডেভ এফ

41

"Pscx" মডিউল যুক্ত করুন

না, এটি পাওয়ারশেলের অন্তর্নির্মিত নয়। এবং mklinkইউটিলিটিটি উইন্ডোজ ভিস্তা / উইন্ডোজ 7 এ নিজের কল করা যায় না কারণ এটি সরাসরি cmd.exeএকটি "অভ্যন্তরীণ কমান্ড" হিসাবে নির্মিত

আপনি পাওয়ারশেল সম্প্রদায় এক্সটেনশনগুলি (ফ্রি) ব্যবহার করতে পারেন । বিভিন্ন ধরণের পয়েন্ট পুনর্বিবেচনার জন্য কয়েকটি সেমিডলেট রয়েছে:

  • New-HardLink,
  • New-SymLink,
  • New-Junction,
  • Remove-ReparsePoint
  • এবং অন্যদের.

1
ভাল চেষ্টা. আপনি যদি X32 বা x64 এর মধ্যে এক্সপি বা ডাব্লু 2 কে 3 সার্ভার চালনা করতে চান তবে নতুন-সিমলিংক কাজ করে না। এক্সপিতে এটি বিনয়ের সাথে আপনাকে জানিয়ে দেবে যে এই আদেশের জন্য আপনার ভিস্তা চালানো উচিত। ডাব্লু 2 কে 3 সার্ভারে এটি বন্ধ হয়ে যায়।
মাইক টি

এটি কারণ XP symlinks সমর্থন করে না। এটি ভিস্তার নতুন বৈশিষ্ট্য। আমি বিশ্বাস করি যে ডাব্লু 2 কে 3 সার্ভার সিমলিংকগুলিও সমর্থন করে না। সিমলিংক সমর্থন পেতে আপনাকে ডাব্লু 2 কে 8 সার্ভারে যেতে হবে। ডাব্লু 2 কে 3 এ কেন নতুন-সিমলিংক বোমা দিচ্ছে তা আমি খতিয়ে দেখছি, এটি এক্সপিকে অনুরূপ কোনও বার্তা দিয়ে ত্রুটি করা উচিত।
কিথ হিল

আমি নতুন-জংশন চেষ্টা করেছি এবং এটি আমার পক্ষে কাজ করবে। খুব খারাপ লিঙ্কটির কার্যকারিতাটি এক্সপি এবং ডাব্লু 2 কে 3 এর জংশনে অবনতি করে না
মাইক টি

নতুন জংশনের আরও ব্যবহারের বিষয়ে ... আমি নতুন পার্স পয়েন্টের সাথে একটি জংশন পেয়েছি। তবে ls (বা get-চাইল্ডাইটেম) এর ত্রুটিগুলি উল্লেখ করে যে .. "ফাইলের নাম, ডিরেক্টরি নাম, বা ভলিউমের লেবেল সিনট্যাক্সটি ভুল" যদি আমি সেখান থেকে একটি উপ-ডিরেক্টরি লিখি এবং চেষ্টা করি।
মাইক টি

2
উইন্ডোজ 10 ব্যবহারকারী উত্তর স্ট্যাকওভারফ্লো . com/a/34905638/195755 দেখুন । উইন্ডোজ 10 এটা করা হয় বিল্ট-ইন। অনুলিপি / আটকান: New-Item -Type এবং বিকল্পগুলির মধ্যে চক্রে ট্যাব টিপুন। Hardlink, SymbolicLinkএবং Junctionআমার জন্য উপস্থিত। উইন 10, সার্ভার 2016+, বা উইন্ডোজ ম্যানেজমেন্ট ফ্রেমওয়ার্ক 5.0+ এর মাধ্যমে পাওয়ারশেল 5.0 এর সাথে পুরানো ওএস ইনস্টল করা হয়েছে।
yzorg

23

উইন্ডোজ 7-এ, কমান্ডটি রয়েছে

fsutil hardlink create new-file existing-file

পাওয়ারশেল এটি পুরো পাথ (সি: \ উইন্ডোজ \ সিস্টেম 32) বা এক্সটেনশান (.exe) ছাড়াই এটি সন্ধান করে।


1
fsutil hardlinkপ্রয়োজন new-fileএবং existing-fileএকই ড্রাইভে যাবে। যদি এটি আপনার পক্ষে গুরুত্বপূর্ণ হয় তবে mklink /cপরিবর্তে সেমিডি ব্যবহার করুন।
মোডসেল করা হয়েছে

9
@ মোডসড হার্ডলিংকস, সংজ্ঞা অনুসারে, লক্ষ্য হিসাবে একই ভলিউমে থাকতে হবে, এটি নির্দিষ্ট করা সীমাবদ্ধতা নয় fsutil(বা সেই বিষয়ে উইন্ডোজ)
দেব

"নরম" সিমলিংক এবং জংশনের জন্য কি সমতুল্য আছে?
jshll

উইন্ডোজ 10 সিস্টেমেও কাজ করেছেন।
FooF

15

নিউ-সিমবলিক লিঙ্ক:

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"

2
উইন্ডোজ 10 ব্যবহারকারীগণ স্ট্যাকওভারফ্লো . com/a/34905638/195755 দেখুন । উইন্ডোজ 10 এটা করা হয় বিল্ট-ইন। অনুলিপি / আটকান: New-Item -Type এবং বিকল্পগুলির মধ্যে চক্রে ট্যাব টিপুন। Hardlink, SymbolicLinkএবং Junctionআমার জন্য উপস্থিত। উইন 10, সার্ভার 2016+, বা উইন্ডোজ ম্যানেজমেন্ট ফ্রেমওয়ার্ক 5.0+ এর মাধ্যমে পাওয়ারশেল 5.0 এর সাথে পুরানো ওএস ইনস্টল করা হয়েছে।
yzorg

অথবা যদি ফাইলের নাম থাকে।
ক্রিস চরবারুক

10

জংশন.এক্সে চেষ্টা করুন

জংশন SysInternals থেকে কমান্ড লাইন ইউটিলিটি তৈরি এবং সহজ সংযোগস্থলের মোছার করে তোলে।

আরও পড়া

  • মাইক্রোসফট পরিভাষা: নরম = সিম্বলিক
    মাইক্রোসফট ব্যবহার "নরম লিঙ্ক" জন্য অন্য নাম হিসাবে "মোড়"
    তবে: একটি "প্রতীকী লিঙ্ক" সম্পূর্ণ অন্য কিছু।
    এমএসডিএন দেখুন: উইন্ডোজের হার্ড লিঙ্ক এবং জংশন
    (এই যারা পদ যেখানে সাধারণ ব্যবহারের জন্য সরাসরি দ্বন্দ্ব রয়েছে "নরম লিঙ্ক" এবং "সিম্বলিক লিঙ্ক" ( "সিমবলিক লিঙ্ক" ) এর অর্থ কী একই জিনিস ।)

এই ইউটিলিটির ব্যবহার সঠিকভাবে আমাকে অন্য ডিরেক্টরিটি সংযোগ করতে এবং এর সাব-ডিরেক্টরিগুলি সফলভাবে অনুসরণ করতে সহায়তা করে। সমস্ত এক্সপি এবং ডাব্লু 2 কে 3 এ। আপনার প্যাথের একটি ডিরেক্টরিতে কেবল এক্সকে যুক্ত করুন এবং এটিকে স্বাভাবিকের মতো কল করুন।
মাইক টি

আমি মনে করি না যে আপনি প্রতীকী লিঙ্কগুলি তৈরি করতে জংশন.এক্সএ ব্যবহার করতে পারেন।
জেসন আর। কুমবস

3
mklinkউইন্ডোজ দিয়ে যে চালিত হয় তা ব্যবহার করা আরও ভাল । আপনার যদি উইন্ডোজ সংস্করণ থাকে যা এটি দিয়ে দেওয়া হয়।
মুছে ফেলা হয়েছে

5

আপনি এই ইউটিলিটিটি ব্যবহার করতে পারেন:

c:\Windows\system32\fsutil.exe create hardlink

1
যদিও এটির জন্য উন্নত সুবিধাগুলি প্রয়োজন। হার্ডলিঙ্কগুলি তৈরি করা সাধারণত হয় না।
জোয়

3

আমি একটি পাওয়ারশেল মডিউল লিখেছিলাম যার এমকে LINK এর জন্য নেটিভ র‌্যাপার রয়েছে। https://gist.github.com/2891103

এর জন্য ফাংশন অন্তর্ভুক্ত:

  • নিউ-সিমবলিক লিঙ্ক
  • নিউ-HardLink
  • নিউ-জংশন

MKLINK আউটপুট ক্যাপচার করে এবং যখন প্রয়োজন হয় সঠিক পাওয়ারশেল ত্রুটি নিক্ষেপ করে।


3

আমি দুটি উত্তর (@ বিভিক্টর এবং @ জোকাসিড) একত্রিত করেছি। এটি উইন্ডোজ 10 এবং উইন্ডোজ সার্ভার 2012 এ পরীক্ষা করা হয়েছিল।

function New-SymLink ($link, $target)
{
    if ($PSVersionTable.PSVersion.Major -ge 5)
    {
        New-Item -Path $link -ItemType SymbolicLink -Value $target
    }
    else
    {
        $command = "cmd /c mklink /d"
        invoke-expression "$command ""$link"" ""$target"""
    }
}

1

আসলে, সিসিন্টার্নাল junction কমান্ড কেবল ডিরেক্টরিতে কাজ করে (আমাকে জিজ্ঞাসা করবেন না কেন) তাই এটি ফাইলগুলিকে হার্ডলিঙ্ক করতে পারে না। আমি cmd /c mklinkনরম লিঙ্কগুলির জন্য যাব (কেন এটি পাওয়ারশেল সরাসরি সমর্থন করে না তা আমি বুঝতে পারি না) বা fsutilহার্ডলিঙ্কগুলির জন্য।

আপনার যদি উইন্ডোজ এক্সপি-তে কাজ করার প্রয়োজন হয় তবে সিসিনটার্নালস ছাড়া অন্য কোনও বিষয় আমি জানি না junction, তাই আপনি হয়ত ডিরেক্টরিতে সীমাবদ্ধ থাকুন।


-1

আমি বাহ্যিক সহায়তা ছাড়াই এটি সহজ উপায় খুঁজে পেয়েছি। হ্যাঁ, এটি একটি প্রত্নতত্ত্ব ডস কমান্ড ব্যবহার করে তবে এটি কাজ করে, এটি সহজ এবং এটি পরিষ্কার।

$target = cmd /c dir /a:l | ? { $_ -match "mySymLink \[.*\]$" } | % `
{
    $_.Split([char[]] @( '[', ']' ), [StringSplitOptions]::RemoveEmptyEntries)[1]
}

প্রতীকী লিঙ্ক বৈশিষ্ট্যযুক্ত সমস্ত এন্ট্রি সন্ধান করতে এটি ডস ডির কমান্ডটি ব্যবহার করে, নির্দিষ্ট লিঙ্কের নাম অনুসারে "[]" ব্র্যাকেট অনুসরণ করে এবং প্রতিটি - সম্ভবত একটি - লক্ষ্যমাত্রার স্ট্রিংটি বের করে।


5
এটি কি আলাদা প্রশ্নের উত্তর?
অ্যালানর্বো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.