Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
Robmantuto

Verknüpungen mit Parametern an die Taskleiste anhängen

Empfohlene Beiträge

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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"

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

... 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 /?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

@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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×