2017-09-03 62 views
0

我想使用腳本在Windows操作系統(.lnk)下創建快捷方式。無法在Linux上的PowerShell中創建Windows快捷方式

在Windows環境中,我選擇了PowerShell,編寫腳本,成功創建了.lnk。

$shell = New-Object -ComObject WScript.Shell 
$desktop = [System.Environment]::GetFolderPath('Desktop') 
$shortcut = $shell.CreateShortcut("$desktop\clickme.lnk") 
$shortcut.TargetPath = "C:\Users\scc\Desktop\linkfolder" 
$shortcut.IconLocation = "shell32.dll,004" 
$shortcut.Save() 

但是我的在線運行環境是Linux。

幸運的是,我發現PowerShell在2016年進行了多平臺移植,是的,它可以支持Linux。我發現它,下載並安裝。在Linux下,在PowerShell命令窗口中,我可以運行一些基本命令。

有一個運行時錯誤! 當我運行的代碼的第一行:

$shell = New-Object -ComObject WScript.Shell 

的錯誤信息是:

 
New-Object : Unable to load DLL 'api-ms-win-core-com-l1-1-0.dll': The specified 
module or one of its dependencies could not be found. 
(Exception from HRESULT: 0x8007007E) 
At line:1 char:10 
+ $shell = New-Object -ComObject WScript.Shell 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [New-Object], DllNotFoundException 
    + FullyQualifiedErrorId : System.DllNotFoundException,Microsoft.PowerShell.Commands.NewObjectCommand 

根據提示,似乎缺乏WScript的相關的模塊。缺少DLL文件。

我的要求是在Linux下運行Java程序來創建Windows格式的快捷方式。 (存儲在網絡磁盤中,文件系統爲btrfs,並且可以提供SMB \ AFP \ NFS \ FTP這些文件服務)

是的,這個需求似乎很奇怪,如果你有一個新的解決方案的想法和想法,請告訴我或與我討論。

我有一個大膽的想法:我可以使用SMB協議來創建一個.lnk文件嗎?

+0

基於錯誤信息,它似乎是Linux實現的PowerShell不包括模仿WScript.Shell對象的支持。這並不令人驚訝。也許你可以試試[Wine](https://www.winehq.org)。否則,一個快捷方式是一個普通的文件,應該可以逆向設計格式並編寫自己的實現。甚至可能存在現有的第三方解決方案。 –

回答

0

您可以使用以下在Linux中創建Windows快捷:

MSLink

它同時具有bash的版本和C源。

參考,這也:

Produce-lnk-file-on-gnu-linux-to-transfer-to-windows

+0

謝謝。你的答案看起來非常可靠,我選擇了使用mslink.sh的方式。但我不知道如何使用它。可以舉個例子嗎? – Shao

相關問題