ショートカットファイル(.link)の配布が上手くいきません
事象
PDQ Connect でデスクトップショートカットを配布する際、ブラウザの制限により問題が発生する場合があります。.lnk ファイルを File Copy ステップで直接アップロードすると、ブラウザがショートカットを解決し、ショートカットそのものではなくリンク先のファイルをアップロードしてしまいます。この挙動により、意図したとおりにショートカットを配布できない場合があります。
この問題を回避する 2 つの方法を示します。
方法 1:ショートカットを zip 化して配布
スクリプトステップに添付されたアーカイブファイルを自動的に展開します。zip化したショートカットファイル、PowerShell を使用して目的の場所へコピーします。
以下の例は、ショートカットをパブリックデスクトップに配置することを前提としています。
特定のユーザーに配布する場合は、$Destination 変数にユーザーのデスクトップディレクトリを指定するか、File Copy ステップの Run mode を「Logged on user」に設定し、$Destination に「$env:userprofile\desktop」を使用してください。
手順:
- 配布したい .lnk ファイルを zip 化します。
- zip ファイルを PDQ Connect パッケージの Script ステップに添付します。
- 以下の PowerShell スクリプトを使用してショートカットをコピーします。
- # zip 内のショートカット名に合わせて変更してください
- $Source = ".\YourShortcutName.lnk"
- $Destination = "$env:public\desktop"
- Copy-Item -Path $Source -Destination $Destination -Force
※ 上記スクリプトの $Source には zip ファイル名ではなく、ショートカット(.lnk ファイル)の名前を指定してください。PDQ Connect はスクリプト実行前に zip の内容を自動展開するため、zip ファイル名を指定する必要はありません。
完成したパッケージは、下図のような構成になります。
方法 2:PowerShell でショートカットを作成
既存のショートカットを配布する代わりに、PowerShell を使用してショートカットを動的に作成することも可能です。この方法は、方法 1 が利用できない場合にのみ推奨されます。
スクリプト例:
- # ショートカットのパスとリンク先を定義
- $shortcutPath = "C:\Users\Public\Desktop\ShortcutName.lnk"
- $shortcutTarget = "C:\Path\To\Your\Application.exe"
- $shortcutIcon = "C:\Path\To\Icon.ico"
- # PowerShell を使用してショートカットを作成
- $shell = New-Object -ComObject WScript.Shell
- $shortcut = $shell.CreateShortcut($shortcutPath)
- $shortcut.TargetPath = $shortcutTarget
- $shortcut.IconLocation = $shortcutIcon
- $shortcut.Save()
# COM オブジェクトの解放
- [System.Runtime.InteropServices.Marshal]::ReleaseComObject($shell)
注意事項:
- アイコンファイルは対象デバイス上に存在している必要があります。必要に応じて事前に配布してください。
- $shortcutPath、$shortcutTarget、$shortcutIcon は、環境に合わせて適宜変更してください。