2017-09-03 110 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

相关问题