经过测试,环境变量下的快捷方式不会被自动处理。
但是我们可以写自己的帮助函数实现你的需求:
function Invoke-Link
{
param($Name)
if($Name -eq $null){
return
}
# find item at current directory
if(Test-Path $Name){
Invoke-Item $Name
return
}
# find item in environment path
[environment]::GetEnvironmentVariable('path') -split ';' |
foreach {
$dir = [environment]::ExpandEnvironmentVariables($_)
# test item width full path
$fileName = Join-Path $dir $Name
if(Test-Path $fileName) {
Invoke-Item $fileName
break
}
# test item with lnk suffix
$fileName = Join-Path $dir ("{0}.lnk" -f $Name)
if(Test-Path $fileName) {
Invoke-Item $fileName
break
}
}
}
Invoke-link -Name 'notepad++.exe.lnk'
Invoke-link -Name 'notepad++'