Robmantuto 1 Geschrieben 2. Dezember 2016 Autor Melden Teilen Geschrieben 2. Dezember 2016 (bearbeitet) 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 2. Dezember 2016 von Robmantuto Zitieren Link zu diesem Kommentar
Robmantuto 1 Geschrieben 5. Dezember 2016 Autor Melden Teilen Geschrieben 5. Dezember 2016 (bearbeitet) 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 6. Dezember 2016 von Robmantuto Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 5. Dezember 2016 Melden Teilen Geschrieben 5. Dezember 2016 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? Zitieren Link zu diesem Kommentar
MurdocX 954 Geschrieben 5. Dezember 2016 Melden Teilen Geschrieben 5. Dezember 2016 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" Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 5. Dezember 2016 Melden Teilen Geschrieben 5. Dezember 2016 ... 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 /? Zitieren Link zu diesem Kommentar
Robmantuto 1 Geschrieben 6. Dezember 2016 Autor Melden Teilen Geschrieben 6. Dezember 2016 (bearbeitet) @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 6. Dezember 2016 von Robmantuto Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 6. Dezember 2016 Melden Teilen Geschrieben 6. Dezember 2016 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. Zitieren Link zu diesem Kommentar
Robmantuto 1 Geschrieben 6. Dezember 2016 Autor Melden Teilen Geschrieben 6. Dezember 2016 (bearbeitet) 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 6. Dezember 2016 von Robmantuto Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.