Comment définir le répertoire par défaut de PowerShell?

108

Existe-t-il un moyen de modifier l'emplacement par défaut de PowerShell?

Comment définir le répertoire de travail par défaut de PowerShell?

Youbloodywombat
la source
1
Voici une façon de le faire en modifiant le raccourci: stackoverflow.com/questions/18726981/...
Blundering Philosopher
@BlunderingPhilosopher C'est pour git shell ..?
Vivek Chavda
@VivekChavda Yep
Philosophe

Réponses:

61

Vous pouvez spécifier le répertoire à ouvrir lors du démarrage de PowerShell:

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

Utilisez-le simplement dans votre raccourci.

Ou utilisez un profil pour définir un répertoire de départ.

Peter Hahndorf
la source
5
Pour PS Core:pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Sergey Zykov
"C: \ Program Files \ PowerShell \ 6 \ pwsh.exe" -WorkingDirectory D: \ test
cem kaan
179

Créez un profil PowerShell comme suit.

  1. Exécutez PowerShell en tant qu'administrateur et exécutez la commande suivante:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    Cela permettra à PowerShell d'exécuter des scripts locaux et des scripts téléchargés à partir d'Internet qui ont été signés. En savoir plus sur cette commande dans la documentation .

  2. Dans votre Documentsdossier, recherchez un dossier nommé WindowsPowerShellpour PowerShell classique ou PowerShellpour PowerShell Core plus récent. Si cela n'existe pas, ce n'est pas grave; créez-le simplement.

  3. Créez un nouveau fichier nommé profile.ps1dans le WindowsPowerShelldossier (ou PowerShellpour PowerShell Core).
  4. Ouvrez profile.ps1et ajoutez la commande suivante pour définir votre répertoire de travail par défaut:

    Set-Location C:\my\default\working\directory
  5. Ouvrez une nouvelle fenêtre PowerShell ... les modifications devraient avoir pris effet.

Jeremy Danyow
la source
1
J'ai essayé ceci, mais obtenez "profile.ps1 ne peut pas être chargé parce que l'exécution des scripts est désactivée". Existe-t-il un moyen "sûr" d'activer des scripts sûrs?
John Little
3
Exécutez ceci: "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned" Vous pouvez en savoir plus ici: technet.microsoft.com/en-us/library/ee176961.aspx Il ne permet pas aux scripts téléchargés depuis Internet de s'exécuter à moins qu'ils ne proviennent d'un la source.
LLL
7
C'est une très mauvaise façon de le faire car si vous avez un script de construction par exemple (comme le script de construction de Visual Studio) et que vous voulez exécuter une commande ps, alors le répertoire de travail de la commande serait défini à cet emplacement, donc il sera fondamentalement casser tous les scripts en utilisant PowerShell commepowershell -File "myscript.ps1"
Santhos
2
Si c'est une mauvaise option, y a-t-il un moyen meilleur / plus sûr de le faire?
Adam_G
4
Laissez-moi me corriger. Lors de l'écriture de scripts PowerShell, par exemple pour la construction, utilisez toujours l'option -NoProfile commepowershel -NoProfile -File "myscript.ps1"
Santhos
33

J'avais essayé les réponses ci-dessus dans Windows Server 2016 sans succès.

Mais j'ai trouvé que cette approche (cela devrait être la même chose pour Windows 10) fonctionnait pour moi.

  1. Démarrer une session PowerShell
  2. Dans la barre des tâches, faites un clic droit et épinglez pour y conserver un lien
  3. Encore une fois, cliquez avec le bouton droit sur l'icône dans la barre des tâches, puis cliquez avec le bouton droit sur Windows PowerShell et choisissez Propriétés
  4. Entrez votre répertoire préféré dans le champ de saisie Démarrer dans: et appuyez sur OK
  5. Commencez par l'icône de la barre des tâches

Terminé!

Dans la même boîte de dialogue Propriétés, vous pouvez également modifier de nombreux autres paramètres tels que les polices, les couleurs, les tailles et dans l' onglet Raccourci via le bouton Advanced. Vous pouvez choisir si cette session PowerShell doit être exécutée avec des privilèges d'administrateur.

Neongrau
la source
5
La modification du répertoire de travail ne semble pas fonctionner lorsque vous archivez Run as administratordans le .lnkmenu avancé. La solution semble être ici stackoverflow.com/questions/31622469/…
Santhos
C'est bizarre, parce que ça marche ici. Juste testé en changeant le répertoire et en changeant la Run as aministratorcase à cocher d'avant en arrière.
neongrau
Fonctionne un charme. Merci.
Yasser Shaikh
12

Un moyen plus simple de définir le répertoire par défaut est le suivant:

  1. Cliquez avec le bouton droit sur l'icône Windows PowerShell et épinglez pour démarrer
  2. Cliquez avec le bouton droit sur l'icône Windows PowerShell dans Démarrer, puis cliquez à nouveau avec le bouton droit sur Windows PowerShell et sélectionnez Propriétés (pas Exécuter en tant qu'administrateur et non Windows PowerShell ISE )

    Entrez la description de l'image ici

    1. Dans l' onglet Raccourci -> champ `` Démarrer dans '', passez à l'emplacement dans lequel vous souhaitez que PowerShell démarre.

    Entrez la description de l'image ici

Antonio
la source
Ooh merci, j'aime cette réponse. M'a aidé à comprendre pourquoi et quel répertoire était défini comme "par défaut". Je pense que cette solution réduit également légèrement les frais généraux liés au chargement du profil (je ne sais pas si c'est vrai ou non, mais on en a envie).
Jennings
4

Mettre Set-Locationdans votre profil changera sans condition le répertoire de travail actuel, ce qui pourrait avoir des conséquences indésirables en ce qui concerne le répertoire de travail pour les scripts que vous exécutez via "exécuter avec PowerShell".

Une autre solution consiste à modifier le répertoire de travail des .lnkfichiers en PowerShell généralement trouvé dans %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell. Cliquez avec le bouton droit sur un lien et changez le répertoire de travail %HOMEDRIVE%%HOMEPATH%du répertoire de votre choix.

Leonard Brünings
la source
1
La modification du répertoire de travail ne semble pas fonctionner lorsque vous archivez Run as administratordans le .lnkmenu avancé. La solution semble être ici stackoverflow.com/questions/31622469/…
Santhos
C'est la meilleure solution (pour moi, du moins).
Anders Arpi
C'est pourquoi les scripts doivent utiliser l' -NoProfileoption comme powershell -NoProfile -File "myscript.ps1"
Santhos
4

Tapez ceci dans PowerShell:

New-Item -path $profile -type file force

Il crée un fichier .ps1 dans le dossier PowerShell. Ouvrez-le et modifiez-le comme:

Set-location C:\files

Terminé

Reportez-vous à ce lien. Ça fonctionne bien.

Modifier le répertoire de démarrage de PowerShell

Rochester
la source
3

Au lieu de changer sans condition le répertoire de travail comme mentionné dans les réponses précédentes, vous pouvez écrire une fonction simple dans le profil PowerShell à utiliser Set-Locationpour changer rapidement le répertoire de travail chaque fois que nécessaire.

Vérifiez la réponse de Jeremy Danyow pour créer / modifier un profil PowerShell.

Ajoutez une ou plusieurs fonctions à votre profil PowerShell:

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

Changez simplement le nom de la fonction et le répertoire vers lesquels vous pointez. L'utilisation de guillemets sur le chemin est obligatoire s'il contient des espaces. J'essaye de garder le préfixe goto_car il aide à me souvenir des noms des fonctions.

Vous pouvez commencer à taper goto_puis appuyer sur TAB pour parcourir toutes les fonctions ajoutées (n'oubliez pas de démarrer une nouvelle fenêtre PowerShell après avoir ajouté / modifié des fonctions).

Sundhar
la source
1

En utilisant uniquement la ligne de commande, si un fichier existe déjà, il y sera ajouté:

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

Avec cela, il semble y avoir une certaine confusion sur le «répertoire de travail» et «l'emplacement» de PowerShell. Ce que la plupart des gens ici font et disent de faire, c'est de changer l '"emplacement" de PowerShell. Le "répertoire de travail" est en fait différent. Voici un article qui l'explique.

Pour ceux qui ne veulent pas lire l'article: Ouvrez PowerShell et utilisez ce que les autres ont dit de faire Set-Location "C:\some\directory". Notez que votre «répertoire de travail» est toujours là où votre PowerShell a été ouvert. Soit "~"ou "%SYSTEMROOT%\system32"selon que vous avez exécuté en tant qu'administrateur ou non. Pour vérifier le répertoire de travail, utilisez [Environment]::CurrentDirectory.

Remarque: dans l'article l'auteur dit de vérifier le "répertoire de travail" en utilisant cette commande:

\[Environment\]::CurrentDirectory

Je ne sais pas si cela fonctionne avec les anciennes versions de PowerShell, mais avec PowerShell 5 (et versions ultérieures), vous devez utiliser [Environment]::CurrentDirectory.

RangerGeof
la source
1

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

Dave
la source
0

Faites-en la première ligne de votre Profile.ps1 et PowerShell Core (pwsh) s'ouvrira dans le répertoire dans lequel vous travaillez actuellement:

set-location (get-location) .path

tedro
la source
0

Cette solution définit le dossier de travail actuel sur l'emplacement où se trouve le script. Assurez-vous de placer au début de votre script, ou du moins avant d'essayer d'utiliser la commande en fonction du chemin de l'emplacement.

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