Veja se esta implementação de funcionalidade semelhante ajuda.
Quando clico com o botão direito do mouse na pasta ou no espaço em branco dentro da pasta, quero ter uma opção de menu que lance o PowerShell nesse local, então quero executar uma função / alias que execute o trabalho de nivelar o diretório e sobrescrever se existir um arquivo com o mesmo nome.
Atualização: Usando o cmdlet get-help no powershell, consegui hackear esse comando que achata o diretório de trabalho e sobrescreve se o arquivo existe.
gci -r -file | move -force -destination $PWD
Atualização:
Eu adicionei "Abrir com o PowerShell" ao menu de contexto por 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'"
em seguida, adicionar um function
foi semelhante a muitos outros idiomas:
function flatten { gci -r -file | move -force -destination $PWD }
Mas não consigo fazer isso carregar automaticamente quando abro o powershell. No bash, eu colocaria isso em .bashrc
ou .profile
e seria carregado.
Eu adicionei o arquivo profile.ps1
com o function
em $pshome
, agora recebo este erro:
. : 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
Não tenho certeza se a alteração da configuração de segurança é a única maneira de contornar isso.
Como permito carregar o script / alias o mais seguro possível?
Atualização:
Alterar o comando para a entrada abaixo em regedit
carrega a função de que preciso:
powershell.exe -noexit -command Set-Location '%V'; function flatten { gci -r -file | move -destination $PWD -force }
Esta é uma solução alternativa. Ainda estou interessado em saber como carregar um perfil sem fazer alterações arriscadas na segurança do SO.
Tags windows powershell