无法在Linux上的PowerShell中创建Windows快捷方式
我想使用脚本在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文件吗?
您可以使用以下在Linux中创建Windows快捷:
它同时具有bash的版本和C源。
参考,这也:
谢谢。你的答案看起来非常可靠,我选择了使用mslink.sh的方式。但我不知道如何使用它。可以举个例子吗? – Shao
基于错误信息,它似乎是Linux实现的PowerShell不包括模仿WScript.Shell对象的支持。这并不令人惊讶。也许你可以试试[Wine](https://www.winehq.org)。否则,一个快捷方式是一个普通的文件,应该可以逆向设计格式并编写自己的实现。甚至可能存在现有的第三方解决方案。 –