PowerShell command to PIN apps to Windows taskbar

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):

  1. Computer management. Path: %windir%\system32\compmgmt.msc

  2. The Windows PowerShell icon. Path: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe

  3. The Task Scheduler icon Path: %windir%\system32\taskschd.msc

  4. The command prompt icon. Path: %windir%\system32\cmd.exe

  5. The Internet Information Services (IIS) Manager icon. Path: %windir%\system32\inetsrv\InetMgr.exe

  6. 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 {
        [ValidateScript( { Test-Path -path $_ })]
        [string] $sourceExe,


        [ValidateScript( {
                (Test-Path -path $_) -and ( (Get-Item -path $_).PSIsContainer )

        [string] $DestinationLinkName = ‘{0}\temp.lnk’ -f [environment]::GetFolderPath(“desktop”),

        [ValidateSet(‘Default’, ’Maximized’, ’Minimized’)]
        [string]$WindowStyle = ‘Default’,

        [ValidateScript( { Test-Path -path $_ })]

        [ValidateScript( { $null -ne $IconPath })]



    $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 {
    catch {

    $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

See my response to your cross-post here: