I’m looking for a PowerShell command or script that will pin these applications that I commonly use to the Windows taskbar at the bottom of Windows. (I have included the path to these programs):
-
Computer management. Path: %windir%\system32\compmgmt.msc
-
The Windows PowerShell icon. Path: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
-
The Task Scheduler icon Path: %windir%\system32\taskschd.msc
-
The command prompt icon. Path: %windir%\system32\cmd.exe
-
The Internet Information Services (IIS) Manager icon. Path: %windir%\system32\inetsrv\InetMgr.exe
-
The Notepad icon. Path: %windir%\system32\notepad.exe
This script will mostly be used in environments where I don’t have access to Active Directory or Group Policy but where I can have the AD team put in a PowerShell script to run one time on several servers or where I will be running this PowerShell script whenever necessary on the individual servers and workstations that I am customizing.
Someone wrote the following script which needs just a few more modifications until it will work properly:
function New-ShortCut { [cmdletbinding()] Param( [parameter(Mandatory)] [ValidateScript( { Test-Path -path $_ })] [string] $sourceExe, [parameter(ValueFromPipelineByPropertyName)] [string]$Arguments, [parameter(ValueFromPipelineByPropertyName)] [ValidateScript( { (Test-Path -path $_) -and ( (Get-Item -path $_).PSIsContainer ) })] [string]$WorkingDirectory, [parameter(ValueFromPipelineByPropertyName)] [string] $DestinationLinkName = ‘{0}\temp.lnk’ -f [environment]::GetFolderPath(“desktop”), [parameter(ValueFromPipelineByPropertyName)] [ValidateSet(‘Default’, ’Maximized’, ’Minimized’)] [string]$WindowStyle = ‘Default’, [parameter(ValueFromPipelineByPropertyName)] [ValidateScript( { Test-Path -path $_ })] [string]$IconPath, [parameter(ValueFromPipelineByPropertyName)] [ValidateScript( { $null -ne $IconPath })] [int]$IconIndexNumber, [parameter(ValueFromPipelineByPropertyName)] [string]$HotKeyString ) $wshShell = New-Object -ComObject WScript.Shell $WindowStyles = @{ Default = 1 Maximized = 3 Minimized = 7 } $shortcut = $wshShell.CreateShortcut( $DestinationLinkName ) $shortcut.TargetPath = $sourceExe if ($arguments) { $shortcut.Arguments = $Arguments } if ($WorkingDirectory) { $shortcut.WorkingDirectory = $WorkingDirectory } if ($WindowStyle) { $shortcut.WindowStyle = $WindowStyles.$WindowStyle } if ($HotKeyString) { $shortcut.Hotkey = $HotKeyString } if ($IconPath) { if ($IconIndexNumber) { $shortcut.IconLocation = ‘{0},{1}’ -f $IconPath, $IconIndexNumber } else { $shortcut.IconLocation = $IconPath } } try { $shortcut.Save() } catch { $_.Exception.Message } $null = [System.Runtime.InteropServices.Marshal]::ReleaseComObject($wshShell) } .\New-ShortCut -sourceExe ‘c:\windows\System32\mmc.exe’ -arguments ‘compmgmt.msc’ -DestinationLinkName $env:userprofile\desktop\ComputerManagement.lnk .\New-Shortcut -sourceExe ‘c:\windows\system32\windowspowershell\v1.0\powershell.exe’ -DestinationLinkName $env:userprofile\desktop\powershell.lnk