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?
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?
Réponses:
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.
pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Créez un profil PowerShell comme suit.
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 .
Dans votre Documents
dossier, recherchez un dossier nommé WindowsPowerShell
pour PowerShell classique ou PowerShell
pour PowerShell Core plus récent. Si cela n'existe pas, ce n'est pas grave; créez-le simplement.
profile.ps1
dans le WindowsPowerShell
dossier (ou PowerShell
pour PowerShell Core).Ouvrez profile.ps1
et ajoutez la commande suivante pour définir votre répertoire de travail par défaut:
Set-Location C:\my\default\working\directory
Ouvrez une nouvelle fenêtre PowerShell ... les modifications devraient avoir pris effet.
powershell -File "myscript.ps1"
powershel -NoProfile -File "myscript.ps1"
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.
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.
Run as administrator
dans le .lnk
menu avancé. La solution semble être ici stackoverflow.com/questions/31622469/…
Run as aministrator
case à cocher d'avant en arrière.
Un moyen plus simple de définir le répertoire par défaut est le suivant:
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 )
Mettre Set-Location
dans 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 .lnk
fichiers 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.
Run as administrator
dans le .lnk
menu avancé. La solution semble être ici stackoverflow.com/questions/31622469/…
-NoProfile
option comme powershell -NoProfile -File "myscript.ps1"
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.
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-Location
pour 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).
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
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
.
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)