linux - 无法在 Linux 上的 PowerShell 中创建 Windows 快捷方式

标签 linux windows powershell wsh

我想在Windows操作系统(.lnk)下使用脚本创建快捷方式。

在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协议(protocol)创建一个.lnk文件吗?

最佳答案

您可以使用以下方法在 Linux 中创建 Windows 快捷方式:

MSLink

它同时具有 bash 版本和 C 源代码。

另请参阅:

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

关于linux - 无法在 Linux 上的 PowerShell 中创建 Windows 快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46026459/

相关文章:

powershell - 喜欢在变量中获取 powershell 脚本的输出以在批处理文件中使用

linux - SwiftMailer:无法在 Linux 上打开 .tar.gz 文件

windows - 第一次开发简单的 Windows 应用程序需要什么 IDE?

c# - PowerShell 脚本在 IIS 执行时不返回任何内容

windows - 此版本...与您正在运行的 Windows 版本不兼容

c++ - 增加 C/C++ 程序使用的(非堆栈)内存

powershell - 从超过1级深度的属性中从数组中提取项目?

linux - 如何替换 sed 命令中具有预定义含义的特定字符?

linux - Ubuntu 11.10(内核 3.0.0-12)中 sysctl vm.drop_caches key 的 "Invalid argument"错误

linux - 从 4 个十六进制数字生成 'unique' 3 个字符的标签