Como você define o diretório padrão do PowerShell?

108

Existe uma maneira de alterar o local padrão do PowerShell?

Como você define o diretório de trabalho padrão do PowerShell?

Youbloodywombat
fonte
1
Esta é uma maneira de fazer isso editando o atalho: stackoverflow.com/questions/18726981/…
Blundering Philosopher
@BlunderingPhilosopher Isso é para git shell ..?
Vivek Chavda
@VivekChavda Yep
Filósofo desajeitado de

Respostas:

61

Você pode especificar o diretório a ser aberto ao iniciar o PowerShell:

powershell.exe -NoExit -command "& {Set-Location $env:systemroot}"

Basta usá-lo em seu atalho.

Ou use um perfil para definir um diretório inicial.

Peter Hahndorf
fonte
5
Para PS Core:pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Sergey Zykov
"C: \ Arquivos de programas \ PowerShell \ 6 \ pwsh.exe" -WorkingDirectory D: \ test
cem kaan
179

Crie um perfil do PowerShell da seguinte maneira.

  1. Execute o PowerShell como administrador e execute o seguinte comando:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    Isso permitirá que o PowerShell execute scripts locais e scripts baixados da Internet que foram assinados. Leia mais sobre este comando na documentação .

  2. Em sua Documentspasta, encontre uma pasta chamada WindowsPowerShellPowerShell clássico ouPowerShell PowerShell Core mais recente. Se não existir, tudo bem; apenas crie.

  3. Crie um novo arquivo chamado profile.ps1na WindowsPowerShellpasta (ouPowerShell para PowerShell Core).
  4. Abra profile.ps1e adicione o seguinte comando para definir seu diretório de trabalho padrão:

    Set-Location C:\my\default\working\directory
  5. Abra uma nova janela do PowerShell ... as alterações devem ter entrado em vigor.

Jeremy Danyow
fonte
1
Eu tentei isso, mas obtenha "profile.ps1 não pode ser carregado porque a execução de scripts está desabilitada". Existe uma maneira "segura" de habilitar scripts seguros?
John Little
3
Execute: "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned" Você pode ler sobre isso aqui: technet.microsoft.com/en-us/library/ee176961.aspx Não permite que scripts baixados da Internet sejam executados a menos que venham de um servidor confiável fonte.
LLL de
7
Esta é uma maneira muito ruim de fazer isso porque se você tiver um script de construção, por exemplo (como o script de construção do Visual Studio) e quiser executar um comando ps, então o diretório de trabalho do comando seria definido para esse local, então basicamente quebrar todos os scripts usando o PowerShell comopowershell -File "myscript.ps1"
Santhos
2
Se essa for uma opção ruim, existe uma maneira melhor / mais segura de fazer isso?
Adam_G
4
Deixe-me me corrigir. Ao escrever scripts do PowerShell, por exemplo, para compilar, sempre use a opção -NoProfile comopowershel -NoProfile -File "myscript.ps1"
Santhos
33

Eu tentei as respostas acima no Windows Server 2016 sem sucesso.

Mas descobri que essa abordagem (deve ser a mesma para o Windows 10) funcionando para mim.

  1. Inicie uma sessão do PowerShell
  2. Na barra de tarefas, clique com o botão direito e fixe para manter um link lá
  3. Novamente, clique com o botão direito do mouse no ícone na barra de tarefas e, em seguida, clique com o botão direito do mouse em Windows PowerShell e escolha Propriedades
  4. Digite o diretório de sua preferência em Iniciar em: campo de entrada e pressione OK
  5. Comece pelo ícone da barra de tarefas

Feito!

Na mesma caixa de diálogo Propriedades, você também pode alterar muitas outras configurações, como fontes, cores, tamanhos e na guia Atalho através do botão Advanced. Você pode selecionar se a sessão do PowerShell deve ser executada com privilégios de administrador.

neongrau
fonte
5
Alterar o diretório de trabalho não parece funcionar quando você verifica Run as administratorno .lnkmenu avançado. A solução parece estar aqui stackoverflow.com/questions/31622469/…
Santhos
Isso é estranho, porque funciona aqui. Acabei de testar mudando o dir e mudando a Run as aministratorcaixa de seleção para frente e para trás.
neongrau de
Funciona muito bem. Obrigado.
Yasser Shaikh,
12

Uma maneira mais fácil de definir o diretório padrão é a seguinte:

  1. Clique com o botão direito no ícone do Windows PowerShell e fixe em Iniciar
  2. Clique com o botão direito do mouse no ícone do Windows PowerShell em Iniciar e, novamente, clique com o botão direito do mouse em Windows PowerShell e selecione Propriedades (não Executar como Administrador e não Windows PowerShell ISE )

    Insira a descrição da imagem aqui

    1. Na guia Atalho -> campo 'Iniciar em', mude para o local em que deseja que o PowerShell inicie.

    Insira a descrição da imagem aqui

Antonio
fonte
Ooh obrigado, eu gosto desta resposta. Me ajudou a entender por que e qual diretório estava sendo definido como "padrão". Acho que essa solução também reduz um pouco o custo de tempo indireto de carregamento do perfil (não tenho certeza se é verdade ou não, mas parece que é).
Jennings
4

Colocar Set-Locationem seu perfil mudará incondicionalmente o diretório de trabalho atual, o que pode ter consequências indesejadas em relação ao diretório de trabalho para scripts que você executa por meio de "executar com PowerShell".

Uma solução alternativa é alterar o diretório de trabalho dos .lnkarquivos para PowerShell geralmente encontrado em %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell. Clique com o botão direito em um link e altere o diretório de trabalho %HOMEDRIVE%%HOMEPATH%para o diretório desejado.

Leonard Brünings
fonte
1
Alterar o diretório de trabalho não parece funcionar quando você verifica Run as administratorno .lnkmenu avançado. A solução parece estar aqui stackoverflow.com/questions/31622469/…
Santhos,
Esta é a melhor solução (para mim, pelo menos).
Anders Arpi
É por isso que os scripts devem usar a -NoProfileopção como powershell -NoProfile -File "myscript.ps1"
Santhos
4

Digite isso no PowerShell:

New-Item -path $profile -type file force

Ele cria um arquivo .ps1 na pasta PowerShell. Abra-o e edite-o como:

Set-location C:\files

Feito

Consulte este link. Funciona bem.

Alterar diretório inicial do PowerShell

Rochester
fonte
3

Em vez de alterar incondicionalmente o diretório de trabalho conforme mencionado nas respostas anteriores, você pode escrever uma função simples no perfil do PowerShell para usar Set-Locationpara alterar rapidamente o diretório de trabalho sempre que necessário.

Verifique a resposta de Jeremy Danyow para criar / modificar um perfil do PowerShell.

Adicione função (ões) ao seu perfil do PowerShell:

function goto_this {set-location 'your\path\to\some\dir'}
function goto_that {set-location 'your\path to some\dir with space'}

Basta alterar o nome da função e o diretório apontado. O uso de aspas no caminho é obrigatório se ele contiver espaços. Tento manter o prefixogoto_ , pois ajuda a lembrar os nomes das funções.

Você pode começar a digitar goto_e pressionar TAB para percorrer todas as funções adicionadas (lembre-se de iniciar uma nova janela do PowerShell após adicionar / modificar funções).

Sundhar
fonte
1

Usando apenas a linha de comando, se já existir um arquivo, ele será anexado a ele:

$(if (-Not (Test-Path ~\Documents\WindowsPowerShell\)){ mkdir ~\Documents\WindowsPowerShell\}) ; echo "Set-Location c:\THELOCATIONYOUWANT" >> ~\Documents\WindowsPowerShell\profile.ps1
Luke Angel
fonte
1

Com isso, parece haver alguma confusão sobre o "diretório de trabalho" e a "localização" do PowerShell. O que a maioria das pessoas aqui está fazendo e dizendo para fazer é mudar a "localização" do PowerShell. O "diretório de trabalho" é realmente diferente. Aqui está um artigo que explica isso.

Para aqueles que não querem ler o artigo: Abra o PowerShell e use o que outros disseram para fazer Set-Location "C:\some\directory". Observe que seu "diretório de trabalho" ainda está onde seu PowerShell foi aberto. De qualquer "~"ou "%SYSTEMROOT%\system32", dependendo se você correu como administrador ou não. Para verificar o diretório de trabalho, use [Environment]::CurrentDirectory.

Nota: no artigo o autor diz para verificar o "diretório de trabalho" usando este comando:

\[Environment\]::CurrentDirectory

Não tenho certeza se isso funciona com versões anteriores do PowerShell, mas com o PowerShell 5 (e posterior) você tem que usar [Environment]::CurrentDirectory.

RangerGeof
fonte
0

Faça desta a primeira linha em seu Profile.ps1 e PowerShell Core (pwsh) será aberto no diretório em que você está trabalhando atualmente:

set-location (get-location) .path

tedro
fonte
0

Write-Output "Set-Location C: \" >> $ profile

Dave
fonte
0

Esta solução define a pasta de trabalho atual para o local onde o script está localizado. Certifique-se de colocar no início do seu script, ou pelo menos antes de tentar usar o comando baseado no caminho da localização.

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
Ipse
fonte