3

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

我玩弄了它,但我无法设置更改,所以我上网并空手而归。我看过 VB 和 Command 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\Fol\1234567890.ico
PS Desktop\Folder>(Get-Content "file name")[6] -replace ".ico","1.ico"

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

IconFile如果有办法在对象中保存、更新和应用新路径,我觉得我要去的地方会起作用。

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

4

3 回答 3

5

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

$Shell = New-Object -ComObject ("WScript.Shell")
$Shortcut = $Shell.CreateShortcut($ShortcutPath)
$Shortcut.IconLocation = "$IconLocation, $IconArrayIndex"
$Shortcut.Save()
于 2017-01-17T21:43:07.560 回答
4

对我来说,$shortcut 中不存在 .iconlocation 并给出错误(可能是 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"
于 2017-06-07T19:37:08.823 回答
3

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

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

于 2017-10-03T16:27:09.003 回答