2017-09-03 4 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です。

幸運なことに、私は2016年にPowerShellをマルチプラットフォームで移植したことに気付きました。はい、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

を、PowerShellののLinuxの実装は、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

関連する問題