PinnedApplications.psm1 (modification of post by view diff)
embed code: <script type="text/javascript" src="http://PoshCode.org/embed/1667"></script>download | new post
PowerShell-module with the ability to pin and unpin programs from the taskbar and the Start-menu in Windows 7 and Windows Server 2008 R2.
- # ==============================================================================================
- #
- #
- # NAME: PinnedApplications.psm1
- #
- # AUTHOR: Jan Egil Ring, Crayon
- # DATE : 26.02.2010
- #
- # COMMENT: Module with the ability to pin and unpin programs from the taskbar and the Start-menu in Windows 7 and Windows Server 2008 R2
- #
- # This module are based on the Add-PinnedApplication script created by Ragnar Harper and Kristian Svantorp:
- # http://blogs.technet.com/kristian/archive/2009/04/24/nytt-script-pin-to-taskbar.aspx
- # http://blog.crayon.no/blogs/ragnar/archive/2009/04/17/pin-applications-to-windows-7-taskbar.aspx
- #
- # For more information, see the following blog post:
- # http://blog.crayon.no/blogs/janegil/archive/2010/02/26/pin-and-unpin-applications-from-the-taskbar-and-start-menu-using-windows-powershell.aspx
- #
- # Locale supported: Norwegian, English
- #
- #
- # ==============================================================================================
- function Set-PinnedApplication
- {
- <#
- .SYNOPSIS
- This function are used to pin and unpin programs from the taskbar and Start-menu in Windows 7 and Windows Server 2008 R2
- .DESCRIPTION
- The function have to parameteres which are mandatory:
- Action: PinToTaskbar, PinToStartMenu, UnPinFromTaskbar, UnPinFromStartMenu
- FilePath: The path to the program to perform the action on
- .EXAMPLE
- Set-PinnedApplication -Action PinToTaskbar -FilePath "C:\WINDOWS\system32\notepad.exe"
- .EXAMPLE
- Set-PinnedApplication -Action UnPinFromTaskbar -FilePath "C:\WINDOWS\system32\notepad.exe"
- .EXAMPLE
- Set-PinnedApplication -Action PinToStartMenu -FilePath "C:\WINDOWS\system32\notepad.exe"
- .EXAMPLE
- Set-PinnedApplication -Action UnPinFromStartMenu -FilePath "C:\WINDOWS\system32\notepad.exe"
- #>
- [CmdletBinding()]
- param(
- [Parameter(Mandatory=$true)][string]$Action, [string]$FilePath
- )
- switch ($Action) {
- "PinToTaskbar" {
- $PinVerbTask = @{}
- $PinverbTask['En-US'] ="Pin to Taskbar"
- $PinverbTask['Nb-No'] ="Fest til oppgavelinjen"
- ##get culture
- $culture = $Host.CurrentUICulture.Name
- #Check to see if path actually exists
- if(-not (test-path $FilePath)) { write-warning "`nPath does not exist.`n $FilePath `nExiting... `n"; return }
- #this should only be done if a full path is given
- $path= split-path $FilePath
- #Create shell envir
- $shell=new-object -com "Shell.Application"
- $folder=$shell.Namespace($path)
- $item = $folder.Parsename((split-path $FilePath -leaf))
- $verbs=$item.Verbs()
- foreach($v in $verbs){if($v.Name.Replace("&","") -match $PinVerbTask[$culture]){$v.DoIt()}}
- }
- "PinToStartMenu" {
- $PinVerbStart = @{}
- $PinverbStart['En-US'] ="Pin to Start Menu"
- $PinverbStart['Nb-No'] ="Fest til Start-menyen"
- ##get culture
- $culture = $Host.CurrentUICulture.Name
- #Check to see if path actually exists
- if(-not (test-path $FilePath)) { write-warning "`nPath does not exist.`n $FilePath `nExiting... `n"; return }
- #this should only be done if a full path is given
- $path= split-path $FilePath
- #Create shell envir
- $shell=new-object -com "Shell.Application"
- $folder=$shell.Namespace($path)
- $item = $folder.Parsename((split-path $FilePath -leaf))
- $verbs=$item.Verbs()
- foreach($v in $verbs){if($v.Name.Replace("&","") -match $PinVerbStart[$culture]){$v.DoIt()}}
- }
- "UnPinFromTaskbar" {
- $UnPinVerbTask = @{}
- $UnPinverbTask['En-US'] ="Unpin from Taskbar"
- $UnPinverbTask['Nb-No'] ="Løsne programmet fra oppgavelinjen"
- ##get culture
- $culture = $Host.CurrentUICulture.Name
- #Check to see if path actually exists
- if(-not (test-path $FilePath)) { write-warning "`nPath does not exist.`n $FilePath `nExiting... `n"; return }
- #this should only be done if a full path is given
- $path= split-path $FilePath
- #Create shell envir
- $shell=new-object -com "Shell.Application"
- $folder=$shell.Namespace($path)
- $item = $folder.Parsename((split-path $FilePath -leaf))
- $verbs=$item.Verbs()
- foreach($v in $verbs){if($v.Name.Replace("&","") -match $UnPinVerbTask[$culture]){$v.DoIt()}}
- }
- "UnPinFromStartMenu" {
- $UnPinVerbStart = @{}
- $UnPinverbStart['En-US'] ="Unpin from Start Menu"
- $UnPinverbStart['Nb-No'] ="Løsne fra Start-menyen"
- ##get culture
- $culture = $Host.CurrentUICulture.Name
- #Check to see if path actually exists
- if(-not (test-path $FilePath)) { write-warning "`nPath does not exist.`n $FilePath `nExiting... `n"; return }
- #this should only be done if a full path is given
- $path= split-path $FilePath
- #Create shell envir
- $shell=new-object -com "Shell.Application"
- $folder=$shell.Namespace($path)
- $item = $folder.Parsename((split-path $FilePath -leaf))
- $verbs=$item.Verbs()
- foreach($v in $verbs){if($v.Name.Replace("&","") -match $UnPinVerbStart[$culture]){$v.DoIt()}}
- }
- default {Write-Warning "Invalid action specified. Valid actions are: PinToTaskbar, PinToStartMenu, UnPinFromTaskbar, UnPinFromStartMenu"}
- }
- }
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.
PowerShell Code Repository