Zum Inhalt wechseln


Foto

Verknüpungen mit Parametern an die Taskleiste anhängen


  • Bitte melde dich an um zu Antworten
37 Antworten in diesem Thema

#31 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 02. Dezember 2016 - 13:35

Habe es so gemacht:

$AktBenutzer = $LastLoggendOnUser = Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI -name LastLoggedOnUser
$Ausgabe = $AktBenutzer
$Benutzer = $Ausgabe.remove(0,2)

dann setze ich $Benutzer im Befehl ein und es funktioniert.


Bearbeitet von Robmantuto, 02. Dezember 2016 - 13:36.


#32 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 05. Dezember 2016 - 13:09

Inzwischen habe ich ein Skript zusammengestellt, das wunderbar funktioniert, aber nur, wenn ich ihn im ISE ausführe. Wenn ich es als Skript per Verknüpfung ausführe, funktioniert es nicht.

Copy-Item E:\Daten\PinnedApplications C:\Windows\System32\WindowsPowerShell\v1.0\Modules -Recurse
Import-Module PinnedApplications
$AktBenutzer =  Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI -name LastLoggedOnUser
$Ausgabe = $AktBenutzer
$LoggedUser = $Ausgabe.Remove(0,2)
Set-PinnedApplication -Action UnPinFromTaskbar -FilePath "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
Set-PinnedApplication -Action UnPinFromTaskbar -FilePath "C:\Program Files\Internet Explorer\iexplore.exe"
Set-PinnedApplication -Action UnPinFromTaskbar -FilePath "C:\Program Files (x86)\Windows Media Player\wmplayer.exe"
Set-PinnedApplication -Action UnPinFromTaskbar -FilePath C:\windows\explorer.exe
Start-Sleep -s 2
$WshShell = New-Object -ComObject WScript.Shell
$ShortCut = $WshShell.CreateShortcut("C:\Users\$LoggedUser\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Windows-Explorer.lnk")
$ShortCut.TargetPath = 'C:\windows\explorer.exe'
$ShortCut.Arguments = '/e,'
$ShortCut.IconLocation = "C:\windows\explorer.exe"
$ShortCut.Save()
Start-Sleep -s 2
Set-PinnedApplication -Action PinToTaskbar -FilePath "C:\Users\$LoggedUser\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Windows-Explorer.lnk"
Remove-Item "C:\Users\$LoggedUser\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Windows-Explorer.lnk"
Rename-Item -Path "C:\Users\$LoggedUser\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Windows-Explorer (2).lnk" -NewName "Windows-Explorer.lnk"
Set-PinnedApplication -Action PinToTaskbar -FilePath "C:\Program Files (x86)\Microsoft Office\Office15\Excel.exe"
Set-PinnedApplication -Action PinToTaskbar -FilePath "C:\Program Files (x86)\Microsoft Office\Office15\winword.exe"
Start-Sleep -s 3
Set-PinnedApplication -Action PinToStartMenu -FilePath "C:\Program Files (x86)\Microsoft Office\Office15\Winword.exe"
Set-PinnedApplication -Action PinToStartMenu -FilePath "C:\Program Files (x86)\Microsoft Office\Office15\Excel.exe"
Start-Sleep -s 3
Rename-Item -Path "C:\Users\$LoggedUser\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\Word (Desktop).lnk" -NewName "Word.lnk"
Start-Sleep -s 3
Rename-Item -Path "C:\Users\$LoggedUser\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\Excel (Desktop).lnk" -NewName "Excel.lnk"
Copy-Item "C:\Users\$LoggedUser\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Windows-Explorer.lnk" "C:\Users\$LoggedUser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\Windows-Explorer.lnk"

Das Ganze führe ich mit einer Admin-Abfrage aus und das Ziel meiner Verknüpfung lautet:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command ". 'Mein Pfad\04.Taskleiste anpassen.ps1'"

Bearbeitet von Robmantuto, 06. Dezember 2016 - 08:09.


#33 Sunny61

Sunny61

    Expert Member

  • 22.236 Beiträge

 

Geschrieben 05. Dezember 2016 - 13:19

In deinem Script gibt es den LW-Buchstaben E:\, ist das ein lokales oder ein Netzlaufwerk? Und wie genau lautet 'Mein Pfad' denn genau? Ist 'Mein Pfad' ein lokales oder ein Netzlaufwerk?
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#34 MurdocX

MurdocX

    Board Veteran

  • 585 Beiträge

 

Geschrieben 05. Dezember 2016 - 14:15

Der Befehl > "Import-Module PinnedApplications" wird so nicht funktionierten, da die Powershell in einem Modulordner deines Rechners nachsieht. Hier muss der volle Pfad zu dem Modul angegeben werden.

 

Beispiel:

Import-Module "C:\Benutzer\$env:Username\PS_Module\PinnedApplications.psm1"

Mit freundlicher Unterstützung
Jan


#35 BOfH_666

BOfH_666

    Junior Member

  • 147 Beiträge

 

Geschrieben 05. Dezember 2016 - 14:19

... und der korrekte Aufruf des Scriptes wäre besser so:

....\Powershell.exe -noprofile -file <Pfad\Datei.ps1>

Du kannst auch noch weitere Parameter anhängen. Alle möglichen Parameter findest Du in einer CMD mit:

Powershell.exe /?

live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#36 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 06. Dezember 2016 - 09:22

@Sunny61

 

Es ist auf meinem USB-Stick, die Datei wird einfach in den Zielordner kopiert, damit diese importiert werden kann. Das habe ich so geschrieben, falls ich einen sauberen Rechner habe, auf dem ich die Konfiguration durchführen möchte und da das Modul hinzugefügt werden muss.... Und MeinPfad ist auch auf dem STICK.

 

@MurdocX

 

Diesen Befehl habe ich vom ursprünglichen Verfasser des PinnedApplications-Moduls übernommen und es funktioniert auch, da das Modul unter C:\Windows\System32\WindowsPowerShell\v1.0\Modules kopiert wird. Liegt dieser Ordner dort, kann ich das Modul über den Befehl Import, ohne einen Pfad anzugeben, importieren. Hast es ja selbst geschrieben, er sucht nach dem Modul auf dem Rechner und das Modul liegt ja auf dem Rechner.

 

@BOfH_666

 

Ich gehe davon aus, dass meine Verknüpfung gemeint ist. Dieser Befehl funktioniert sehr gut. Gibt es auch im Netz nachzulesen.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command ". 'Mein Pfad\04.Taskleiste anpassen.ps1'"

Deiner funktioniert irgendwie gar nicht, der startet meine PS1-Dateien nicht.

 

Letztendlich muss er irgendwie daran liegen, dass ich die Datei direkt starte, aus dem ISE funktioniert es ja das Skript also muss irgendwie in so einer Art Fenster bzw. Prozess gestartet werden, damit es läuft, so stell ich mir das zumindest vor.


Bearbeitet von Robmantuto, 06. Dezember 2016 - 09:22.


#37 Sunny61

Sunny61

    Expert Member

  • 22.236 Beiträge

 

Geschrieben 06. Dezember 2016 - 09:27

Starte doch mal eine administrative Commandline und verbinde dich damit dann auf dein LW E:\, funktioniert das denn? Wenn ja, starte den Aufruf:

 

cd E: [ENTER]
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command ". 'Mein Pfad\04.Taskleiste anpassen.ps1'" [ENTER]

 

Wobei ich mit vorstellen kann, das mit den Anführungsstrichen so nicht passt.


Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#38 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 06. Dezember 2016 - 10:41

Habe den Fehler gefunden, leider nicht die Lösung, es liegt daran, dass ich das Skript mit dem Admin-Konto ausführe. Da ich aber mit einem normalen Benutzer angemeldet bin, liegt es wahrscheinlich daran. Starte ich das Skript per "Mit Powershell ausführen" ohne "Als Admin ausführen", dann funktioniert es. Also muss irgendwo in dem importierten Skript eine Abfrage sein, die den Fehler auslöst. Ich finde es nicht, vielleicht Ihr?

###########################################################################" 
 #  
 # 
 # NAME: PinnedApplications.psm1 
 #  
 # AUTHOR: Jan Egil Ring, Crayon 
 # 
 # DATE  : 06.08.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 
 # 
 # Johan Akerstrom`s blog: http://cosmoskey.blogspot.com 
 # 
 # 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 
 # 
 # VERSION HISTORY: 
 # 1.0 17.04.2009 - Initial release by Ragnar Harper and Kristian Svantorp 
 # 1.1 26.02.2010 - Update by Jan Egil Ring. Added the capability to unpin applications. 
 # 1.2 06.08.2010 - Update by Johan Akerstrom. Added full MUI support. 
 #  
 ###########################################################################" 
 
 
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,  
      [Parameter(Mandatory=$true)][string]$FilePath 
       ) 
       if(-not (test-path $FilePath)) {  
           throw "FilePath does not exist."   
    } 
    
       function InvokeVerb { 
           param([string]$FilePath,$verb) 
        $verb = $verb.Replace("&","") 
        $path= split-path $FilePath 
        $shell=new-object -com "Shell.Application"  
        $folder=$shell.Namespace($path)    
        $item = $folder.Parsename((split-path $FilePath -leaf)) 
        $itemVerb = $item.Verbs() | ? {$_.Name.Replace("&","") -eq $verb} 
        if($itemVerb -eq $null){ 
            throw "Verb $verb not found."             
        } else { 
            $itemVerb.DoIt() 
        } 
            
       } 
    function GetVerb { 
        param([int]$verbId) 
        try { 
            $t = [type]"CosmosKey.Util.MuiHelper" 
        } catch { 
            $def = [Text.StringBuilder]"" 
            [void]$def.AppendLine('[DllImport("user32.dll")]') 
            [void]$def.AppendLine('public static extern int LoadString(IntPtr h,uint id, System.Text.StringBuilder sb,int maxBuffer);') 
            [void]$def.AppendLine('[DllImport("kernel32.dll")]') 
            [void]$def.AppendLine('public static extern IntPtr LoadLibrary(string s);') 
            add-type -MemberDefinition $def.ToString() -name MuiHelper -namespace CosmosKey.Util             
        } 
        if($global:CosmosKey_Utils_MuiHelper_Shell32 -eq $null){         
            $global:CosmosKey_Utils_MuiHelper_Shell32 = [CosmosKey.Util.MuiHelper]::LoadLibrary("shell32.dll") 
        } 
        $maxVerbLength=255 
        $verbBuilder = new-object Text.StringBuilder "",$maxVerbLength 
        [void][CosmosKey.Util.MuiHelper]::LoadString($CosmosKey_Utils_MuiHelper_Shell32,$verbId,$verbBuilder,$maxVerbLength) 
        return $verbBuilder.ToString() 
    } 
 
    $verbs = @{  
        "PintoStartMenu"=5381 
        "UnpinfromStartMenu"=5382 
        "PintoTaskbar"=5386 
        "UnpinfromTaskbar"=5387 
    } 
        
    if($verbs.$Action -eq $null){ 
           Throw "Action $action not supported`nSupported actions are:`n`tPintoStartMenu`n`tUnpinfromStartMenu`n`tPintoTaskbar`n`tUnpinfromTaskbar" 
    } 
    InvokeVerb -FilePath $FilePath -Verb $(GetVerb -VerbId $verbs.$action) 
} 
 
Export-ModuleMember Set-PinnedApplication

Bearbeitet von Robmantuto, 06. Dezember 2016 - 15:03.