为快捷方式创建链接数组
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 的指示效果很好
我正在尝试创建一个 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 的指示效果很好