我想使用腳本在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實現的PowerShell不包括模仿WScript.Shell對象的支持。這並不令人驚訝。也許你可以試試[Wine](https://www.winehq.org)。否則,一個快捷方式是一個普通的文件,應該可以逆向設計格式並編寫自己的實現。甚至可能存在現有的第三方解決方案。 –