Change target of shortcut created in Powershell
Asked Answered
T

1

1

I've got a script that installs a certain BP Program called iLink (Crosslink). The Script works fine and installs Java 6.21 and both Crosslink Components and also installs through DISM .Net 3.5 perfectly.

However, the only drawback is that the web version only works on a admin run internet explorer process. I've got it to create a shortcut on the users desktop but I want the script to change the target of it from: "C:\Program Files\Internet Explorer\iexplore.exe" to runas.exe /user:capeplc\a-bhargate /savecreds "C:\Program Files\Internet Explorer\iexplore.exe"

This is the script I've currently got I just want it to add it to the end or something to change the target of the shortcut:

# ... 
$TargetFile = "C:\Program Files\Internet Explorer\iexplore.exe"
$ShortcutFile = "$env:USERPROFILE\desktop\IEadmin.lnk"
$WScriptShell.CreateShortcut($ShortcutFile)
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$Shortcut.TargetPath = $TargetFile
$Shortcut.Save()

The script outcome is fine, just need the shortcuts target changing to the one mentioned above in bold. Any help would be great!

Treharne answered 10/12, 2017 at 17:54 Comment(1)
have a look at this site: support.microsoft.com/en-us/help/242297/… - I think you have to change $Shortcut.TargetPath = "runas.exe" and add $Shortcut.Arguments = '/user:capeplc\a-bhargate /savecreds "C:\Program Files\Internet Explorer\iexplore.exe"'Wuhu
E
2

As gpunktschmitz points out in a comment on the question, you must:

$WScriptShell = New-Object -ComObject 'WScript.Shell'

$ShortcutFile = "$env:USERPROFILE\desktop\IEadmin.lnk"

$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)

$Shortcut.TargetPath = 'runas.exe' 
$Shortcut.Arguments =
  "/user:capeplc\a-bhargate /savecreds `"C:\Program Files\Internet Explorer\iexplore.exe`""     #` (dummy comment to fix broken syntax highlighting)
$Shortcut.Save()

See the WshShortcut documentation for an overview of all available properties.

Note the need to `-escape the embedded double quotes.

Alternatively, with fixed strings such as the one at hand, you could use '...' (single quotes) as the outer quotes, in which case you needn't escape embedded double quotes.

Conversely, consider use of $env:ProgramFiles and specifying the username via a variable, in which case you do need "..." for the outer quoting to ensure that string expansion (interpolation) is performed.

Epistaxis answered 10/12, 2017 at 20:52 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.