我有一堆 .lnk 文件,需要根据快捷方式指向的目标对它们进行不同的处理。我发现很少有关于如何使用其他语言执行此操作的信息,但没有找到有关使用 powershell 执行此操作的信息。
我试过这个:
$sh = New-Object -COM WScript.Shell
$target = $sh.CreateShortcut('<path>').Target
但是,即使我可以在 .lnk 属性中看到指定了目标,这也会返回一个空字符串。
关于如何实现这一目标有什么想法吗?
您在财产上犯了错误;正如 wOxxOm 所建议的,你应该使用TargetPath
而不是Target
:
$sh = New-Object -ComObject WScript.Shell
$target = $sh.CreateShortcut('<full-path-to-shortcut>').TargetPath
Google 和 MSDN 在这方面确实很有帮助;此外,管道对象Get-Member
通常是有用且有教育意义的。这个问题 https://stackoverflow.com/questions/484560/editing-shortcut-lnk-properties-with-powershell还展示了如何使用 PowerShell 操作快捷方式,并使用与此处所示相同的技术。
如果您还想要可执行文件的参数,那么它们会单独存储:
$arguments = $sh.CreateShortcut('<full-path-to-shortcut>').Arguments
再次,管道反对Get-Member
- 在这种情况下,返回的对象WScript.Shell.CreateShortcut()
- 提供有用的信息。
应该注意的是,当路径包含 Unicode 表情符号字符时,使用此技术和这些调用会存在问题;对于这种情况有一个解决方法这个 StackOverflow 问题 https://stackoverflow.com/questions/74728834/copy-the-target-of-a-shortcut-file-lnk-when-the-target-path-contains-emoji-c.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)