পাওয়ারশেল ব্যবহার করে কীভাবে শর্টকাট তৈরি করবেন


90

আমি এই এক্সিকিউটেবলের জন্য পাওয়ারশেলের সাথে একটি শর্টকাট তৈরি করতে চাই:

C:\Program Files (x86)\ColorPix\ColorPix.exe

কিভাবে এই কাজ করা যেতে পারে?


4
আপনি যদি প্রশাসক হিসাবে একটি শর্টকাট চালাতে চান তবে আপনি এই উত্তরটি ব্যবহার করতে পারেন ।
জেপি ব্লাঙ্ক

আপনার @ জেপি ব্ল্যাঙ্কের উত্তর গ্রহণ করার জন্য গুরুত্ব সহকারে বিবেচনা করা উচিত। এটি ওয়ান লাইনার
কলব ক্যানিয়ন

@ কলবক্যানিয়ন সাবধান হন, আমার উত্তরটি একটি সিম্বলিক লিঙ্ক, শর্টকাট নয়।
JPBlanc

উত্তর:


139

আমি পাওয়ারশেলে কোনও নেটিভ সেমিডলেট জানি না তবে আপনি পরিবর্তে কম অবজেক্ট ব্যবহার করতে পারেন:

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk")
$Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe"
$Shortcut.Save()

আপনি আপনার w পিডব্লিউডিতে সেট-শর্টকাট.পিএস 1 হিসাবে একটি পাওয়ারশেল স্ক্রিপ্ট সংরক্ষণ করতে পারেন

param ( [string]$SourceExe, [string]$DestinationPath )

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()

এবং এটি যেমন কল

Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"

আপনি যদি লক্ষ্য এক্সে যুক্তিগুলি পাস করতে চান তবে এটি দ্বারা করা যেতে পারে:

#Set the additional parameters for the shortcut  
$Shortcut.Arguments = "/argument=value"  

এর আগে $ শর্টকাট ave সেভ ()।

সুবিধার জন্য, এখানে সেট-শর্টকাট.পিএস 1-র পরিবর্তিত সংস্করণ is এটি তার দ্বিতীয় প্যারামিটার হিসাবে যুক্তিগুলি গ্রহণ করে।

param ( [string]$SourceExe, [string]$ArgumentsToSourceExe, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Arguments = $ArgumentsToSourceExe
$Shortcut.Save()

4
খুব সামান্য, তবে কেবলমাত্র ধারাবাহিকতার জন্য আমার কাছে Set-ShortCutসিএমডিলেট এর বাক্য গঠন আরও বেশি পছন্দ হবে MKLINKবা Set-Aliasযেখানে উপন্যাস বা লিঙ্কটি প্রথম যুক্তি হিসাবে আসে এবং তারপরে লক্ষ্য হিসাবে আসে। param ( [string]$LinkPath, [string]$TargetPath )
ওড়াদ

ডাব্লুশেল সিওএম উপাদান বা ওয়ার্কআরউন্ডগুলির মধ্যে একটির cmd /c mklinkসীমাবদ্ধতা .lnk ফাইলের নামকরণের জন্য খুব সীমিত অক্ষর সেট। উদাহরণস্বরূপ, একটি containing যুক্ত একটি নাম ব্যর্থ হবে। এর চারপাশে যদি আপনার আরও ভাল চরিত্রের সমর্থন প্রয়োজন হয় তবে .lnk ফাইল তৈরি করার সময় ফাইলের নাম [Web.HttpUtility]::UrlEncode()(পরে Add-Type -AN System.Web) করা, তারপরে পুনর্নাম-আইটেমটি ব্যবহার করে এর নাম পরিবর্তন করে নামকরণ করা উচিত।
ব্রায়ানারি

সত্যিকারের ডেস্কটপে শর্টকাট তৈরি করার সময় (একটি হার্ড-কোডেড পথ যা আমি সত্যই বলেছি বা সত্য SpecialFoldersহতেও পারে না $WshShell.SpecialFolders("Desktop")তার বিপরীতে ), ডাব্লুস্ক্রিপ্ট অবজেক্টের পদ্ধতিটি কাজে আসতে পারে: আপনাকে সত্যিকারের পথ দেবে ডেস্কটপ ফোল্ডার, যা আপনি পরে কল করার সময় ব্যবহার করতে পারেন CreateShortcut
amn

আমি এই পদ্ধতি ব্যবহার করা PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")। এটি একটি শর্টকাট তৈরি করেছে যা উইন্ডোজ এক্সপ্লোরার থেকে দেখা যায়, তবে আমি cd homeনিজে পিএস-এ টাইপ করলে আমার একটি ত্রুটি হয়cd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
বেন কার্প

44

PowerShell 5.0 শুরুতে New-Item, Remove-Itemএবং Get-ChildItemতৈরি এবং সিম্বলিক লিংক পরিচালনার সমর্থন করার জন্য উন্নত করা হয়েছে। Itemtype জন্য পরামিতি New-Item, একটি নতুন মান গ্রহণ করে SymbolicLink। এখন আপনি নতুন আইটেমের সেমিডিলেট চালিয়ে একক লাইনে প্রতীকী লিঙ্ক তৈরি করতে পারেন।

New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"

কেয়ারফুল হোন একটি সিম্বলিক লিঙ্ক একটি শর্টকাট থেকে আলাদা , শর্টকাট কেবল একটি ফাইল। তাদের একটি আকার রয়েছে (একটি ছোট্ট, এটি কেবল যেখানে উল্লেখ করেছেন সেখানে) এবং তাদের ব্যবহারের জন্য সেই ফাইল টাইপটিকে সমর্থন করার জন্য একটি অ্যাপ্লিকেশন প্রয়োজন। একটি প্রতীকী লিঙ্কটি ফাইল সিস্টেম স্তর এবং সমস্ত কিছুই এটিকে আসল ফাইল হিসাবে দেখায়। প্রতীকী লিঙ্কটি ব্যবহার করতে কোনও অ্যাপ্লিকেশনটির কোনও বিশেষ সহায়তার প্রয়োজন নেই।

যাইহোক আপনি যদি পাওয়ারশেল ব্যবহার করে একটি রান হিসাবে প্রশাসক শর্টকাট তৈরি করতে চান তবে আপনি ব্যবহার করতে পারেন

$file="c:\temp\calc.lnk"
$bytes = [System.IO.File]::ReadAllBytes($file)
$bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON (Use –bor to set RunAsAdministrator option and –bxor to unset)
[System.IO.File]::WriteAllBytes($file, $bytes)

কেউ যদি .LNK ফাইলে অন্য কিছু পরিবর্তন করতে চান তবে আপনি অফিসিয়াল মাইক্রোসফ্ট ডকুমেন্টেশনটি উল্লেখ করতে পারেন ।


4
শর্টকাটের জন্য আইকনটি সেট করা কি সম্ভব?
অরেড

7
যদিও একটি সিমিলিংক একটি শর্টকাট থেকে খুব আলাদা। একজন সিমবলিক লিঙ্ক ব্যবহার করে তৈরি করা New-Item"${env:AppData}\Microsoft\Windows\SendTo"মেনু, যেমন করতে এক্সপ্লোরার পাঠান দেখানোর হবে না, এবং আইকন বা কাজ ডিরেক্টরি মত শর্টকাট বৈশিষ্ট্য কাস্টমাইজ অনুমতি দেয় না।
ব্রায়ানারি

যদি আমি সঠিকভাবে বুঝতে পারি, আপনি যদি একটি প্রতীকী লিঙ্ক সেট করেন তবে শর্টকাটটি কোনও শেল এবং যে কোনও ডিরেক্টরি থেকে ব্যবহার করা যেতে পারে। এটি কিছুটা সিস্টেমের ভার সেট করার মতো। এটা কি সঠিক? আপনি এটি ডিরেক্টরি জন্য ব্যবহার করতে পারেন?
বেন কার্প

4
এতে অবাক হওয়ার কিছু কিভাবে PowerShell দেব বরং আছে আমাদের লিখুন contorted এবং ধারণাতীত কোড উপরে দেখানো মত, পরিবর্তে শুধুমাত্র এই মত একটি নতুন পরামিতি মধ্যে 3 লাইন বাস্তবায়নের: New-Item -ItemType SymbolicLink -RunAsAdmin ...
not2qubit

4
@ লুক, তবে অবশ্যই এটি একটি এক্সপ্লোরার লিঙ্ক, সুতরাং আপনি যখন এটিতে ডাবল ক্লিক করেন তখন এটি ক্যালক.এক্সে শুরু করে। আপনি পাওয়ারশেল ( & C:\temp\calc.lnk) সহ এটি শুরু করার সময় এটি হয়ে যায় । তুমি কি প্রত্যাশা কর ?
জেপি ব্ল্যাঙ্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.