我有一堆.lnk文件,需要根据快捷方式指向的目标区别对待它们.我发现很少有如何使用其他语言,但没有关于使用PowerShell执行此操作.
我试过这个:
$sh = New-Object -COM WScript.Shell
$target = $sh.CreateShortcut('<path>').Target
Run Code Online (Sandbox Code Playgroud)
但是这会返回一个空字符串,即使我可以在.lnk属性中看到指定了Target.
有关如何实现这一点的任何想法?
Jef*_*lin 11
你在财产上犯了错误; 正如wOxxOm建议的那样,你应该使用TargetPath
而不是Target
:
$sh = New-Object -ComObject WScript.Shell
$target = $sh.CreateShortcut('<full-path-to-shortcut>').TargetPath
Run Code Online (Sandbox Code Playgroud)
谷歌和MSDN在这里确实很有帮助; 此外,管道对象Get-Member
往往是有用的和教育性的.此问题还说明了如何使用PowerShell操作快捷方式,并使用与此处所示相同的技术.
如果您还想要可执行文件的参数,那么它们是分开存储的:
$arguments = $sh.CreateShortcut('<full-path-to-shortcut>').Arguments
Run Code Online (Sandbox Code Playgroud)
再次,管道对象Get-Member
- 在这种情况下,返回的对象WScript.Shell.CreateShortcut()
- 提供有用的信息.
小智 6
对于专家来说,这似乎是显而易见的,但对我们来说,这里似乎有一个关键的灯泡时刻:
<full-path-to-shortcut>
=全名!卫生署!
如果您想要快捷方式的当前目标,请确保在Shell 调用中.FullName
使用Get_ChildItem | ForEach-Object
等等.CreateShortcut
.为了我:
.CreateShortcut($_.FullName)
返回适当的值; 而.CreateShortcut($_)
返回'null' 归档时间: |
|
查看次数: |
13174 次 |
最近记录: |