Question:
I want to create a powershell script that creates a shortcut in the windows 7 taskbar, that runs a batch file from cmd.exe.
Trying to do as told in these two posts:
- https://superuser.com/questions/100249/how-to-pin-either-a-shortcut-or-a-batch-file-to-the-new-windows-7-taskbar
- How to create a shortcut using Powershell
Basically I want to set a shortcut files Target property to be something like:
1 2 |
C:\Windows\System32\cmd.exe /C "C:\Dev\Batch files\cmake-guiMSVC1064bit.bat" |
What I got so far in my powershell script is:
1 2 3 4 5 6 7 8 9 10 11 |
$batchPath = "C:\Dev\my_batchfile.bat" $taskbarFolder = "$Home\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\Taskbar\" $cmdPath = (Get-Command cmd | Select-Object Definition).Definition $objShell = New-Object -ComObject WScript.Shell $objShortCut = $objShell.CreateShortcut("$shortcutFolder\$batchName.lnk") #TODO problem ... :( $objShortCut.TargetPath = "$cmdPath /C $batchPath" $objShortCut.Save() |
This results in the following error:
1 2 3 4 5 |
Exception setting "TargetPath": "The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))" At C:\Dev\Powershell\GetTools.ps1:220 char:18 + $objShortCut. <<<< TargetPath = "$cmdPath /C $batchPath" + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyAssignmentException |
Anyone got any suggestions?
Answer:
Set the arguments via the Arguments property:
1 2 3 4 5 6 7 8 9 |
$batchName = 'cmd' $batchPath="D:\Temp\New folder\test.bat" $taskbarFolder = "$env:APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\Taskbar\" $objShell = New-Object -ComObject WScript.Shell $objShortCut = $objShell.CreateShortcut("$taskbarFolder\$batchName.lnk") $objShortCut.TargetPath = 'cmd' $objShortCut.Arguments="/c ""$batchPath""" $objShortCut.Save() |