我正在尝试创建一个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位时,我将获得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()
}
}发布于 2018-10-07 20:37:26
重新启动并按照@4c74356b41的指示工作非常成功。
https://stackoverflow.com/questions/40981841
复制相似问题