PowerShell का उपयोग करके शॉर्टकट कैसे बनाएं


90

मैं इस निष्पादन योग्य के लिए PowerShell के साथ एक शॉर्टकट बनाना चाहता हूं:

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

यह कैसे किया जा सकता है?


2
यदि आप एक प्रशासक के रूप में एक शॉर्टकट चलाना चाहते हैं तो आप इस उत्तर का उपयोग कर सकते हैं ।
JPBlanc

आपको @ JPBlanc के उत्तर को स्वीकार करने पर गंभीरता से विचार करना चाहिए। यह एक लाइनर है
Kolob Canyon

@KolobCanyon सावधान रहें, मेरा जवाब एक प्रतीकात्मक लिंक है, शॉर्टकट नहीं।
JPBlanc

जवाबों:


139

मैं किसी भी देशी cmdlet को पॉवरशेल में नहीं जानता लेकिन आप इसके बजाय कॉम ऑब्जेक्ट का उपयोग कर सकते हैं:

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

आप अपने $ pwd में set-shortcut.ps1 के रूप में एक पॉवरशेल स्क्रिप्ट सेव बना सकते हैं

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"  

$ शॉर्टकट से पहले । ()।

सुविधा के लिए, यहां सेट-शॉर्टकट.पीएस 1 का संशोधित संस्करण है। यह तर्कों को इसके दूसरे पैरामीटर के रूप में स्वीकार करता है।

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()

1
बहुत मामूली, लेकिन सिर्फ स्थिरता के लिए मुझे Set-ShortCutcmdlet का सिंटैक्स अधिक पसंद होगा MKLINK, या Set-Aliasजहां पहले तर्क और फिर लक्ष्य के रूप में उपनाम या लिंक आता है। param ( [string]$LinkPath, [string]$TargetPath )
18

WshShell COM घटक या cmd /c mklinkवर्कअराउंड में से एक सीमा .lnk फ़ाइल के नामकरण के लिए एक बहुत ही सीमित वर्ण सेट है। उदाहरण के लिए → युक्त एक नाम विफल हो जाएगा। इसके चारों ओर एक तरह से, यदि आपको बेहतर चरित्र समर्थन की आवश्यकता है , तो .lnk फ़ाइल बनाते समय फ़ाइल नाम को [Web.HttpUtility]::UrlEncode()(बाद में Add-Type -AN System.Web) है, तो नाम बदलने के लिए इसका नाम बदलकर UrlDecoded नाम रखें।
7

सच्चे डेस्कटॉप पर शॉर्टकट बनाते समय (एक हार्ड-कोडेड पथ को संभालने के विपरीत, जो सच हो सकता है या नहीं भी हो सकता है, एक कदाचार जो मैंने कई बार देखा है), SpecialFoldersएक WScript ऑब्जेक्ट की विधि काम आ सकती है: $WshShell.SpecialFolders("Desktop")आपको सही रास्ता देगा डेस्कटॉप फ़ोल्डर, जिसे आप कॉल करते समय बाद में उपयोग कर सकते हैं CreateShortcut
एमएन

मैंने इस विधि का उपयोग किया PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")। इसने एक शॉर्टकट बनाया, जिसे विंडोज़ एक्सप्लोरर से देखा जा सकता है, लेकिन जब मैंने cd homePS में टाइप किया तो मुझे एक त्रुटि मिली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। अब आप न्यू-आइटम cmdlet चलाकर एक पंक्ति में प्रतीकात्मक लिंक बना सकते हैं।

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 फ़ाइल में कुछ और बदलना चाहता है तो आप आधिकारिक Microsoft दस्तावेज़ीकरण का उल्लेख कर सकते हैं ।


4
क्या शॉर्टकट के लिए आइकन सेट करना भी संभव है?
3

6
एक सिमलिंक एक शॉर्टकट से बहुत अलग है, यद्यपि। एक्सप्लोरर सेंड टू मेनू में शो में उपयोग किया New-Itemगया सिम्बलिन बनाया जाता है "${env:AppData}\Microsoft\Windows\SendTo", जैसे, और आइकन या वर्किंग डायरेक्टरी जैसी शॉर्टकट प्रॉपर्टीज़ को कस्टमाइज़ करने की अनुमति नहीं देता है।
ब्रायनरी

यदि मैं सही ढंग से समझता हूं, यदि आप एक प्रतीकात्मक लिंक सेट करते हैं, तो शॉर्टकट का उपयोग किसी भी शेल से, और किसी भी निर्देशिका से किया जा सकता है। यह कुछ हद तक सिस्टम var सेट करने जैसा है। क्या ये सही है? क्या आप इसे निर्देशिका के लिए भी उपयोग कर सकते हैं?
बेन कार्प

1
यह आश्चर्य की बात है कि पावरस्लेव देव ने हमें उल्टे और असंगत कोड लिखे हैं जैसे 3 लाइनों को इस तरह एक नए पैरामीटर में लागू करने के बजाय New-Item -ItemType SymbolicLink -RunAsAdmin ...:।
Not2qubit

1
@ ल्यूक, लेकिन निश्चित रूप से, यह एक खोजकर्ता लिंक है, इसलिए जब आप इस पर डबल क्लिक करते हैं, तो यह calc.exe शुरू होता है। तो यह तब होता है जब आप इसे शुरू करते हैं पावरशेल ( & C:\temp\calc.lnk)। आप क्या उम्मीद करते हैं ?
JPBlanc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.