【发布时间】:2017-06-14 20:50:31
【问题描述】:
我正在尝试使用 Wscript.Shell 在 Powershell 脚本中创建桌面快捷方式。目标路径是网络驱动器上的 HTML 文件。我指定了完整路径,但是在创建快捷方式时,文件扩展名被截断为 .htm。由于文件以 .html 结尾,这显然是行不通的。
有什么办法可以避免截断文件名?我的猜测是 Wscript.Shell 不支持超过 3 个字符的目标文件扩展名。这是正确的吗?
这是我的代码(Powershell):
$wshell = New-Object -ComObject WScript.Shell
$shortcut = $wshell.CreateShortcut("C:\users\parts.AGRISERVICELLC\Desktop\AgriWeb.lnk")
$shortcut.TargetPath = "S:\Service\agriweb_dairy\home.html"
$shortcut.WorkingDirectory = "S:\Service\agriweb_dairy"
$shortcut.IconLocation = "C:\arch2.ico"
$shortcut.Save()
此代码创建快捷方式,并带有我的图标。但是目标路径被截断为S:\Service\agriweb_dairy\home.htm。
更新:有趣的是,如果我在本地 Powershell 会话中运行上述命令,则不会出现此问题。但是,如果我使用 Enter-PSSession 远程访问另一台计算机,则扩展名将截断为 3 个字符。问题不在于路径的长度——如果我缩短路径并将扩展名更改为“.htmll”,它仍然会将扩展名缩短为“.htm”。 此外,如果路径位于 C: 驱动器上,则扩展不会截断。但是当我使用网络驱动器时,扩展会被截断。
【问题讨论】:
-
这里不会发生这种情况。 .html 扩展名仍在链接中。该链接也可以使用。
-
我尝试了更多,只要我在本地 Powershell 会话中运行命令,它就可以正常工作。当我使用 Enter-PSSession 远程访问另一台计算机时,扩展名再次被截断为 3 个字符。
-
我可以确认问题:
powershell "$shortcut=(New-Object -COM WScript.Shell).CreateShortcut('%userprofile%\Desktop\test.lnk');$shortcut.TargetPath='Z:\test.docx';$shortcut.Save(); Write-Host $shortcut.TargetPath"将扩展截断为Z:\test.doc。但是powershell "$shortcut=(New-Object -COM WScript.Shell).CreateShortcut('%userprofile%\Desktop\test.lnk');$shortcut.TargetPath='C:\test.docx';$shortcut.Save(); Write-Host $shortcut.TargetPath"工作正常:C:\test.docx。之前两个命令行的唯一区别是卷号c:vs.z:
标签: powershell vbscript shortcut