Похоже, вы называете все ярлыки D:\link.lnk
, и цикл просто будет перезаписывать одно и то же имя снова и снова. Указание уникального имени ссылки на ярлык с помощью свойства BaseName
(имя минус расширение) должно решить вашу проблему. Также вам нужно использовать цикл $item
, чтобы указать TargetPath
.
Кроме того, с помощью цикла Write-Host
вы фактически ничего не назначаете своей переменной $1
. Удаляя % { Write-Host $_.FullName }
$1
, вы получите правильный вывод. Таким образом, правильный код должен быть:
$1 = get-childitem "D:\Test" -recurse | where {$_.extension -eq ".exe"}
ForEach ($item in $1) {
Write-Host "Creating Shortcut: D:\$($item.BaseName).lnk Pointing to: $($item.FullName)"
$Shell = New-Object -ComObject ("WScript.Shell")
$ShortCut = $Shell.CreateShortcut("D:\$($item.BaseName).lnk")
$ShortCut.TargetPath= $item.FullName
$Shortcut.Save()
}