Jump to content

Robmantuto

Members
  • Gesamte Inhalte

    57
  • Registriert seit

  • Letzter Besuch

Fortschritt von Robmantuto

Enthusiast

Enthusiast (6/14)

  • Erste Antwort
  • Engagiert
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei

Neueste Abzeichen

1

Reputation in der Community

2

Beste Lösungen

  1. Nee, ist klar, habe ich auch getestet. Die Klammern sollten es näher erklären, ist ja auch egal.
  2. Ne Frage, warum das zweite $SID hinter $SID = ([Security.Principal.NTAccount]($user)).Translate([Security.Principal.SecurityIdentifier]).Value $SID? Ich sehe schon, dient nur dazu da, um die SID nochmal auszugeben, genauso wie beim Zielpfad. Hat funktioniert, danke. Hier ist doch ein SID zu viel, kann es sein? ...Users\SID$SID\User\"
  3. $user = [Environment]::UserName) ([Security.Principal.NTAccount]($user)).Translate([Security.Principal.SecurityIdentifier]).Value Damit bekomme ich auf jeden Fall die SID raus. Wie setze ich dieses Information für den Kopiervorgang ein? Erläutere es nochmal am konkreten Beispiel: Ich habe den Zielort: C:\Windows\System32\GroupPolicyUsers\SID(hier mir nicht bekannt bzw. müsste per Skript ausgelesen werden)\User\ Dorthin soll die Registry.pol vom Stick kopiert werden.
  4. Was soll denn nicht daran konkret sein? Ich denke, ich habe es gut erklärt. Nochmal für dich: Mit welchem Befehl kann ich den Namen der Ordners B, der sich im Ordner A unter "MeinPfad" befindet, auslesen und diesen Namen für einen weiteren Befehl, nämlich Kopieren einer Datei von einem Stick nach "Meinpfad\Name des Ordners, der ausgelesen wurde", verwenden. Und bitte ein Beispiel. Danke.
  5. Ich tue gar nichts ab, für mich ist es in dem Fall irrelevant, ich hätte auch sagen können, ich habe einen Ordner, der ist bereits da und ich möchte in Powershell ein Skript schreiben, das mir den Namen dieses Ordners ausliest und im Skript verwendet, um eine Datei per Befehl, im Skript, in diesen ausgelesenen Ordner kopiert. Natürlich könnte man an diesem Punkt fragen, warum man nicht gleich den Pfad mit dem Namen des Ordners im Skript einträgt, jedoch war das nicht meine Frage. Meine Frage war, gibt es in Powershell diese Möglichkeit und mit welchen Befehlen kann man das umsetzen? Gruß, Rob
  6. Der Ordner wird von Windows erstellt und hat die SID des angemeldeten Users, ist aber irrelevant, da es eigentlich darum geht, den Namen auszulesen, egal wie dieser zustande kam. Den Kopiervorgang würde ich dann per Skript ausführen wollen und würde das Ganze in PowerShell umsetzen wollen.
  7. Folgendes Szenario: Ich habe einen Ordner, in dem wird ein neuer Ordner erstellt, der immer einen anderen Namen hat. Ist der Ordner erstellt, soll der Name des Ordners ausgelesen werden und für einen Kopiervorgang einer Datei benutzt werden. Um es genauer zu erklären, ich habe eine Datei, die per Skript in diesen Ordner kopiert werden soll, da aber der Ordner immer einen anderen Namen bekommt, kann ich den Namen im Skript nicht hinterlassen. Deshalb müsste der Name des Ordners erst ausgelesen werden und dann für den Kopiervorgang als Ziel benutzt werden. Ist das möglich?
  8. 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
  9. @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.
  10. 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'"
  11. 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.
  12. So habe es getestet, leider nicht funktioniert es nicht so wie ich es mir gedacht habe. Mein LogonUI heisst .\Benutzer und wenn ich es als Variable einsetze, dann versucht er einen Link mit diesem Pfad C:\Users\.\Benutzer\... zu erstellen und das klappt nicht. Kann man irgendwie die ersten zwei Zeichen per Script weglassen?
  13. Danke, eine Super-Lösung, werde es mal testen und hier berichten, habe mir erstmal damit geholfen, den User vorübergehend zum Admin zu machen, das hilft dann auch.
  14. Gibt es eine Möglichkeit zwei Befehle hintereinander mit einem Klick auszuführen? Z.B. einmal ein Programm starten und gleich danach etwas in die Registry eintragen oder ein anderes Programm starten.
  15. Jetzt habe ich ein weiteres Problem und zwar starte ich das Script mit einem Adminkonto, dadurch, dass ich das tue, möchte er Verknüpfungen für das Adminkonto anlegen, das aber nicht funktioniert, da ich mit einem normalen Nutzer angemeldet bin. Ich gehe davon aus, dass daran liegt, dass ich env:username auslese. Wie kann ich am besten den aktuellen ANGEMELDETEN User auslesen und ihn im Script einbauen, sodass Verknüpfungen beim angemeldeten User angelegt werden und nicht versucht wird, für den Admin Verknüpfungen anzulegen? Ich könnte natürlich den User vorübergehend zum Admin machen, aber ich würde das vermeiden wollen.
×
×
  • Neu erstellen...