如何使用 Powershell 更改现有 URL 快捷方式的图标?

How can I change icons for existing URL shortcuts using Powershell?

我想使用 Powershell 更改现有快捷方式的图标。

我试了一下,但我无法设置更改,所以我上网并空手而归。我看过 VB 和命令 Shell 的示例,但没有看到 Powershell 的示例。将近 99% 的人演示了如何创建快捷方式,但我只需要知道如何更改图标并且只更改图标。

这是我目前所做的:

# Make a copy of the icon in the directory
PS> cd Program Files (x86)\Dir\Fol\
PS Program Files (x86)\Dir\Fol> cp 1234567890.ico 12345678901.ico

# Gets the IconFile property and changes it to the new icon
PS Program Files (x86)\Dir\Fol> cd Desktop\Folder\
PS Desktop\Folder>(Get-Content "file name")[6]
IconFile=C:\Program Files (x86)\Dir\Fol34567890.ico
PS Desktop\Folder>(Get-Content "file name")[6] -replace ".ico","1.ico"

我试过使用 WScript.Shell ComObject 但这似乎只能创建新的快捷方式。

我觉得如果有一种方法可以在对象中保存、更新和应用新的 IconFile 路径,那么我打算使用它的地方就可以了。

由于图标(或者可能是符号 LNK 中的某些内容?),我这样做是为了修复操作 "breaking" 并且默认为通用图标。似乎只是快捷方式的问题。快捷方式完美运行,一切都很好,但出于某种原因,图标默认。如果我进入并通过 GUI 重新应用相同的图标名称,它不会改变。但是,如果我通过任何措施更改 .ico 文件的名称然后设置它,它就可以工作。不知道它为什么这样做,但我想创建一个 PS 脚本来自动执行(我正在寻找一个借口来阻塞脚本)

wscript.shell CreateShortcut method 将创建一个新的或打开一个现有的快捷方式。这是一个简短的脚本,您需要在其中定义 $ShortcutPath$IconLocation$IconArrayIndex:

$Shell = New-Object -ComObject ("WScript.Shell")
$Shortcut = $Shell.CreateShortcut($ShortcutPath)
$Shortcut.IconLocation = "$IconLocation, $IconArrayIndex"
$Shortcut.Save()

对我来说 .iconlocation 在 $shortcut 中不存在并给出错误(可能是 powershell 版本...)。但这里是如何将 url 图标更改为我制作的自定义图标:(主要部分是添加内容命令)

$WshShell = New-Object -comObject WScript.Shell

$path = "C:\Users\USER\desktop\WEBSITE.url"

$targetpath = "https://WEBSITE.com"

$iconlocation = "C:\Users\USER\Desktop\YourIcon.ico"

$iconfile = "IconFile=" + $iconlocation

$Shortcut = $WshShell.CreateShortcut($path)

$Shortcut.TargetPath = $targetpath

$Shortcut.Save()

Add-Content $path "HotKey=0"

Add-Content $path "$iconfile"

Add-Content $path "IconIndex=0"

我正在编写一个脚本来将默认文件夹图标更改为网络驱动器的图标。这可能在某些地方有所帮助。命令是:

$ShortCut.IconLocation = "C:\WINDOWS\system32\imageres.dll, 28";