如何获取网络快捷方式 lnk 文件的目标?

How do I get the target of a web shortcut lnk file?

我发现这是一个相当独特的问题。我使用以下脚本创建了一个网络快捷方式:

$target = "http://internalwebsite/subsite"
$shortcut_lnk = "$publicDesktop\usefulname.lnk"
$wscriptshell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($Shortcut_lnk)
$Shortcut.TargetPath = $Target
$ShortCut.IconLocation = "https://internalwebsite/1.ico, 0";
$Shortcut.Save()

不幸的是,目标是 http 而不是 HTTPS。我想检测任何具有不安全版本的快捷方式并将其替换为安全版本。

我找到了下面的代码,应该给我需要的信息:

$shortcut = 'C:\users\public\Desktop\usefulname.lnk'
$sh = New-Object -ComObject WScript.Shell
$target = $sh.CreateShortcut($shortcut).TargetPath

不过,这个returns没有数据。如果我只是 运行:

$sh.CreateShortcut($shortcut)

它returns:

FullName         : C:\users\public\Desktop\usefulname.lnk
Arguments        : 
Description      : 
Hotkey           : 
IconLocation     : https://internalwebsite/1.ico,0
RelativePath     : 
TargetPath       : 
WindowStyle      : 1
WorkingDirectory : 

我已确认 link 按预期工作。我现在的问题 - 如何获得实际的网络 link?如果我转到 link 的属性,我会看到目标类型是网站 (http://internalwebsite/subsite),并且目标显示为灰色,信息相同。但到目前为止,我的 Google-fu 在列出目标类型或解释为什么我无法拉出路径(或任何替代方法)方面没有产生任何结果。

如果有人能提供帮助,我将不胜感激!

您需要以稍微不同的方式创建网络快捷方式。根据 this TechNet forum posting,文件名 必须 具有 .url 而不是 .lnk 的扩展名,并且您 必须 显式调用对象的.Save()方法

Jeff Zeitlin, thank you, that ended up being the answer for me! I ended up having to do a little more looking to create a custom icon for a URL (uses a slightly different method). Looks like I'm going to have to remove the link and replace it with a URL. I'm using the following script (part of which I pilfered from ):

$WshShell = New-Object -comObject WScript.Shell
$targetPath = "http://internalwebsite/subsite"
$iconLocation = "https://internalwebsite/1.ico"
$iconFile = "IconFile=" + $iconLocation
$path = "$publicDesktop\usefulname.url"
$Shortcut = $WshShell.CreateShortcut($path)
$Shortcut.TargetPath = $targetPath
$Shortcut.Save()

Add-Content $path "HotKey=0"
Add-Content $path "$iconfile"
Add-Content $path "IconIndex=0"

然后,如果我想找出有关文件的信息,我可以使用:

get-content $path

这使得以后针对该路径编写任何脚本变得更加容易。非常感谢您的帮助!