Powershell创建快捷方式

时间:2018-06-12 16:22:00

标签: powershell

我有一个PowerShell脚本,不会正确更新$ TargetFile。这是我的代码:

$TargetFile = "C:\Users\wjschan\AppData\Roaming\DAS Toolbox\DAS Toolbox.exe"

$ShortcutFile = "$StartMenuPath\$ApplicationName.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$NewTarget = $TargetFile
$Shortcut.TargetPath = $TargetFile
$Shortcut.IconLocation = $IconLocation
$Shortcut.Save()

但是当我右键单击快捷方式时,它会将“此PC”列为目标。但是,如果我将此代码放入其中,则可以正常工作:

$ShortcutFile = "$StartMenuPath\$ApplicationName.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$NewTarget = $TargetFile
$Shortcut.TargetPath = "C:\Users\wjschan\AppData\Roaming\DAS Toolbox\DAS Toolbox.exe"
$Shortcut.IconLocation = $IconLocation
$Shortcut.Save()

我不知道为什么硬编码文件路径有效,但变量没有。如果$ TargetFile指向不同的路径(说网络共享),它就可以工作。

Win10,Build 1607(当前业务部门) - 不,我无法获得更新版本。

1 个答案:

答案 0 :(得分:2)

显然,您的Write-Host不是$TargetFile类型 我怀疑它是String类型,因为你可能会动态地构建路径 要找出它实际关注的对象类型,请尝试:IO.FileInfo

要强制它为$TargetFile.PSTypeNames,请将其换成引号,例如:

String

或使用:$Shortcut.TargetPath = "$TargetFile" $TargetFile.ToString()