Hinzufügen von 'Mit PowerShell öffnen' zum Kontextmenü von Ordnerobjekt und Ladeprofil, wenn PS gestartet wird

0

Wenn ich mit der rechten Maustaste auf einen Ordner oder eine Leerstelle innerhalb eines Ordners klicke, möchte ich eine Menüoption haben, die PowerShell an diesem Ort startet. Anschließend möchte ich eine Funktion / einen Alias ​​ausführen, mit der das Verzeichnis reduziert und überschrieben wird, wenn Datei mit dem gleichen Namen existiert.

Update: Mit dem Cmdlet get-help in Powershell konnte ich diesen Befehl hacken, der das Arbeitsverzeichnis vereinfacht und überschreibt, wenn eine Datei vorhanden ist.

gci -r -file | move -force -destination $PWD

Update: Ich habe "Open with PowerShell" zum Kontextmenü von hinzugefügt regedit

[HKEY_CLASSES_ROOT\Directory\Background\shell\Open with PowerShell]

[HKEY_CLASSES_ROOT\Directory\Background\shell\Open with PowerShell\command]
@="powershell.exe -noexit -command Set-Location '%V'"

[HKEY_CLASSES_ROOT\Directory\shell\Open with PowerShell]

[HKEY_CLASSES_ROOT\Directory\shell\Open with PowerShell\command]
@="powershell.exe -noexit -command Set-Location '%V'"

Das Hinzufügen von a functionwar vielen anderen Sprachen ähnlich:

function flatten { gci -r -file | move -force -destination $PWD }

Aber ich kann nicht scheinen, dieses zu erhalten, um automatisch zu laden, wenn ich Powershell öffne. In Bash würde ich dies in .bashrcoder setzen .profileund es würde geladen werden.

Ich habe die profile.ps1Datei mit dem functionin hinzugefügt $pshome, jetzt bekomme ich diese Fehlermeldung:

. : File C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 cannot be loaded because running scripts is disabled
on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:3
+ . 'C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1'
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

Ich bin mir nicht sicher, ob das Ändern der Sicherheitseinstellungen der einzige Weg ist, dies zu umgehen.

Wie kann ich zulassen, dass Skripte / Alias ​​so sicher wie möglich geladen werden?

Aktualisieren:

Das Ändern des Befehls in den Eintrag unten in regeditlädt die Funktion, die ich benötige:

powershell.exe -noexit -command Set-Location '%V'; function flatten { gci -r -file | move -destination $PWD -force }

Dies ist eine Problemumgehung. Ich bin immer noch daran interessiert zu wissen, wie man ein Profil lädt, ohne riskante Änderungen an der Sicherheit des Betriebssystems vorzunehmen.

sdkks
quelle
1
Ich denke, Sprachempfehlungen sind hier nicht zum Thema (aber verwenden Sie Powershell).
SimonS
Eine @SimonS-Sprachempfehlung wäre nicht unangebracht. Es würde den nächsten Schritt bestimmen.
SDKKS
Also, am Ende, was ist Ihre Frage? Wie erstelle ich einen Befehlsalias? Oder vielleicht, wie man Powershell zum Kontextmenü hinzufügt? Bitte klären Sie diese Frage und entfernen Sie sie entweder, und stellen Sie eine neue Frage, oder entfernen Sie alle anderen Fragen.
Daniel B
@DanielB werde ich bearbeiten und entfernen. Die Frage ist, wie Alias ​​/ Funktion bei jedem PowerShell-Start sicher aus der Profildatei geladen werden kann. Da es einige nützliche Informationen gibt, werde ich nicht alles in Bezug auf meine vorherige Frage entfernen.
SDKKS
@ SimonS irgendwelche PowerShell-Tipps?
SDKKS

Antworten:

0

Prüfen Sie, ob diese Implementierung ähnlicher Funktionen hilfreich ist.

user10404
quelle