为快捷方式创建链接数组

时间:2016-12-05 19:29:23

标签: powershell shortcuts

我正在尝试创建一个PowerShell脚本,它将检查快捷方式的路径,如果它不存在,它将创建它。我不想要一个.csv。所以我认为链接数组会运行良好。如果我这样做,快捷方式的创建就会起作用:

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

  

$ Shortcut.TargetPath = $ Short.Target它将创建一个空白的快捷方式   这将针对“这台PC”。快捷方式的命名工作得很好   但目标位置没有。

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

$short.target

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

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

我错过了什么?

$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()
 }
}

1 个答案:

答案 0 :(得分:0)

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