为快捷方式创建链接数组

Creating a linked Array for Shortcuts

我正在尝试创建一个 PowerShell 脚本来检查快捷方式的路径,如果它不存在,它将创建 it.I 不希望需要 .csv。所以我认为链接数组会很好用。如果我这样做,则快捷方式的创建有效:

$Shortcut.TargetPath = "$home\desktop\somepath" 但在尝试这样做时:

$Shortcut.TargetPath = $Short.Target it will create a blank shortcut that will target "this PC". The naming of the shortcut works just fine but the target location does not.

当我 运行 脚本时,它会将快捷方式放置在桌面上,并且它们都已正确命名,但目标位置无法通过。现在,当我在 运行 代码后将 $short.target 输入 PowerShell 时,它会拉出最后一位 运行(它应该)就好了。

$short.target

C:\Program Files (x86)\WebEx\Productivity Tools\ptoneclk.exe

此外,当每个 Write-Host $Short.Link 位为 运行 时,我得到 System.Collections.Hashtable.Link is being created

我错过了什么?

$Shortcuts = @(
@{Link = "$Home\Desktop\Word 2016.lnk" ; Target = "C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE"},
@{Link = "$Home\Desktop\Excel 2016.lnk" ; Target = "C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE"},
@{Link = "$Home\Desktop\Outlook 2016.lnk" ; Target = "C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE"},
@{Link = "$Home\Desktop\Google Chrome.lnk" ; Target = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"},
@{Link = "$Home\Desktop\Cisco AnyConnect.lnk" ; Target = "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"},
@{Link = "$Home\Desktop\Cisco Jabber.lnk" ; Target = "C:\Program Files (x86)\Cisco Systems\Cisco Jabber\CiscoJabber.exe"},
@{Link = "$Home\Desktop\Webex Productivity Tools.lnk" ; Target = "C:\Program Files (x86)\WebEx\Productivity Tools\ptoneclk.exe"}
)

Write-Host "Creating shorcuts"

foreach($Short in $Shortcuts)
{
if (Test-Path -path $Short.Link)
 {
   Write-Host "$Short.Link Exists already"
 }
else
{
Write-Host "$Short.Link is being created"
    $WshShell = New-Object -comObject WScript.Shell
    $Shortcut = $WshShell.CreateShortcut($Short.Link)
    $Shortcut.TargetPath = $Short.Target
    $Shortcut.Save()
 }
}

重新启动并遵循@4c74356b41 的指示效果很好