如何在PowerShell中下载使用ico图标创建快捷方式,解决无图标报错
正确操作方案
核心错误原因
- PowerShell 5.1及更低版本的
Invoke-WebRequest默认未启用二进制传输模式,下载的ico文件会因为编码转义出现损坏,无法被系统识别为合法图标文件 WScript.Shell创建快捷方式时,IconLocation属性必须遵循图标文件路径,图标索引的格式,单个ico文件的图标索引固定为0,缺失索引参数会导致系统无法读取图标- 系统默认对
C:\Windows\Temp目录的图标资源读取存在权限限制,容易触发读取失败报错
修正后可直接运行的代码
# 替换为实际的favicon下载地址 $faviconUrl = "你的图标下载链接" # 替换为快捷方式指向的目标地址 $targetUrl = "你的网站链接" # 替换为快捷方式的名称 $shortcutName = "快捷方式名称" # 改用二进制模式下载图标,存到用户临时目录避免权限问题 $iconPath = Join-Path $env:TEMP "custom_shortcut.ico" Invoke-WebRequest -Uri $faviconUrl -OutFile $iconPath -UseBasicParsing -Method Get # 创建快捷方式 $wshShell = New-Object -ComObject WScript.Shell $desktopPath = [System.Environment]::GetFolderPath('Desktop') $shortcutPath = Join-Path $desktopPath "$shortcutName.lnk" $shortcut = $wshShell.CreateShortcut($shortcutPath) # 补充图标索引参数0 $shortcut.IconLocation = "$iconPath,0" $shortcut.TargetPath = $targetUrl $shortcut.Save()
额外验证建议
如果仍然出现报错,可先手动打开$env:TEMP目录找到下载的ico文件,双击确认可以正常预览图标,排除下载链接返回的不是合法ico文件的问题。
内容的提问来源于stack exchange,提问作者samuel clark
相关产品推荐
相关产品推荐

