如何获得web快捷链接文件的目标?



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

$target = "http://internalwebsite/subsite"
$shortcut_lnk = "$publicDesktopusefulname.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:userspublicDesktopusefulname.lnk'
$sh = New-Object -ComObject WScript.Shell
$target = $sh.CreateShortcut($shortcut).TargetPath

但是,这不会返回任何数据。如果我只运行:

$sh.CreateShortcut($shortcut)

它返回:

FullName         : C:userspublicDesktopusefulname.lnk
Arguments        : 
Description      : 
Hotkey           : 
IconLocation     : https://internalwebsite/1.ico,0
RelativePath     : 
TargetPath       : 
WindowStyle      : 1
WorkingDirectory : 

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

如果有人能帮忙,我将不胜感激!

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

Jeff Zeitlin,谢谢你,这就是我的答案!我最终不得不做更多的工作来为URL创建自定义图标(使用稍微不同的方法)。看起来我将不得不删除链接,并将其替换为URL。我正在使用以下脚本(其中一部分是我从不同的堆栈溢出问题窃取的):

$WshShell = New-Object -comObject WScript.Shell
$targetPath = "http://internalwebsite/subsite"
$iconLocation = "https://internalwebsite/1.ico"
$iconFile = "IconFile=" + $iconLocation
$path = "$publicDesktopusefulname.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

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

相关内容

  • 没有找到相关文章

最新更新