我正在尝试创建一个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()
}
}
答案 0 :(得分:0)
重新启动并遵循@ 4c74356b41的指示效果很好