Nytt script, “Pin to taskbar”
Skrev for en kort stund siden om automatisering av Pin to Start menu og Pin to taskbar. Og da spesielt det faktum at vi ikke tilbyr særlig grad av funksjonalitet for å gjøre dette, noe mange ønsker i større utrullinger. Jeg posta da et enkelt VB script for å automatisere det.
Ragnar Harper i Crayon fulgte opp med en powershell utgave av scriptet og etter litt mailing fram og tilbake har vi nå en ganske bra, om enn fortsatt enkel versjon med integrert multi språk støtte, såvidt litt feilhåndtering og støtte for start-meny pinning også.
Vi har fortsatt flere planer for hvordan vi skal utvide det, neste trinn blir nok å legge til mulighet for fjerning også, samt å søke gjennom Path angitt i env dersom bruker kun angir en exe fil som parameter.
1: # ==============================================================================================
2: #
3: #
4: # NAME: Add-ToTaskbar.ps1
5: #
6: # AUTHOR: Ragnar Harper , Crayon
7: # Kristian Svantorp, Microsoft
8: # DATE : 17.04.2009
9: #
10: # COMMENT:
11: # Locale supported: Norwegian, English, Swedish, Danish, Finnish
12: #
13: # https://blog.crayon.no/blogs/ragnar
14: # https://blogs.technet.com/kristian
15: #
16: # Changelog:
17: # KS: Added multilanguage support, automated. Added Nordic verbs
18: # KS: Changed path splitting
19: # KS: Added some error-handling, test-path
20: # KS: Added -s parameter for pinning to start menu instead
21: #
22: #
23: # Todo:
24: # KS: Get the verbs in the languages listed above
25: # : Add error handling
26: # : Use env:path instead if not given full path
27: # : Add switch to pin to start-menu instead. default taskbar, param for startmenu
28: # ==============================================================================================
29:
30: $PinVerbTask = @{}
31: $PinverbTask['En-US'] ="Pin to Taskbar"
32: $PinverbTask['Nb-No'] ="Fest til oppgavelinjen"
33: $PinverbTask['Sv-se'] = "Fäst i Aktivitetsfältet"
34: $PinverbTask['Da-dk'] = "Fastgør til proceslinje"
35: $PinverbTask['Fi-fi'] = "Kiinnitä tehtäväpalkkiin"
36:
37:
38: $PinVerbStart = @{}
39: $PinverbStart['En-US'] ="Pin to Start Menu"
40: $PinverbStart['Nb-No'] ="Fest til Start-menyen"
41: $PinverbStart['Sv-se'] = "Fäst på Start-menyn"
42: $PinverbStart['Da-dk'] = "Fastgør til menuen Start"
43: $PinverbStart['Fi-fi'] = "Kiinnitä Käynnistä-valikkoon"
44:
45: ##add the rest
46:
47: ##get culture
48: $culture = (get-uiculture).Name
49:
50: if($args.count -lt 1)
51: {
52: Write-Host "`nWrong number of arguments."
53: Write-Host "usage: Add-ToTaskbar.ps1 [program to pin] [-s]"
54: Write-Host "example: Add-ToTaskBar.ps1 c:\windows\system32\calc.exe"
55: Write-Host "Parameter -s pins program to start menu instead"
56: Write-Host "You must include folderpath to program `n"
57: }
58: else
59: {
60: $file=$args[0]
61: #Check to see if path actually exists
62: if(-not (test-path $file)) { write-host "`nPath does not exist.`n $file `nExiting... `n"; exit }
63:
64: #this should only be done if a full path is given
65: $path= split-path $file
66: #Create shell envir
67: $shell=new-object -com "Shell.Application"
68: $folder=$shell.Namespace($path)
69: $item = $folder.Parsename((split-path $file -leaf))
70:
71: $verbs=$item.Verbs()
72: if($args[1] -eq "-s") {foreach($v in $verbs){if($v.Name.Replace("&","") -match $PinVerbStart[$culture]){$v.DoIt()}}}
73: else { foreach($v in $verbs){if($v.Name.Replace("&","") -match $PinVerbTask[$culture]){$v.DoIt()}} }
74: }
75:
76:
77:
Multi culture/språk ble implementert enkelt med en hash, linje 30, som inneholder verbnavnet på ulike språk og har culture koden som nøkkel. (denne bør ha DisplayLanguage som nøkkel i neste versjon)
På linje 40 henter vi inn culture fra OS og lagrer i en variabel for senere bruk. Denne brukes som key i hashen på linje 72 eller 73.
Støtte for startmeny var bare en linje ekstra til slutt, der vi kaller et annet verb om parameter –s er angitt.
Foreløpig er det ikke stort med feilhåndtering, eneste vi sjekker på er om path som er angitt faktisk eksisterer. Funksjoner der som er gode å vite om hvis du bruker powershell mot filsystemet, Split-path og test-path, brukes her. (help path i PS vil gi deg enda et par)
(ikke testa på finsk, dansk, svensk, men såvidt meg bekjent er det riktige setninger)
Scriptet ligger på :
https://blog.crayon.no/files/folders/scripts/entry12967.aspx og heter add-pinnedapplication.ps1. Den siten blir oppdatert med siste versjon når vi fikser mer.
edit: Fiksa minor greier i scriptet (cut&paste feil), samt endre get-culture til get-uiculture, som blir mer korrekt.
Comments
Anonymous
January 01, 2003
Enkleste er jo å kjøre det fra en powershell console, da skriver du bare .Add-PinnedApplication.ps1 C:Windowsnotepad.exe" Hvis du skal eksekvere det slik du skriver der bør du nok bruke -f parameteren til powershell, den angir script fil som skal kjøres. Funker fint her med kommandoen din og -f før navnet på ps fila.Anonymous
April 29, 2009
Hei, har prøvd å få dette til å fungere, men får det ikke helt til. Noen yttterligere tips dere kan komme med ?? Kjører "powershell .Add-PinnedApplication.ps1 C:Windowsnotepad.exe" men ingenting skjer