Come si imposta la directory predefinita di PowerShell?


Risposte:


61

È possibile specificare la directory da aprire all'avvio di PowerShell:

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

Basta usarlo nella tua scorciatoia.

Oppure utilizza un profilo per impostare una directory di avvio.


5
Per PS Core:pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Sergey Zykov

"C: \ Programmi \ PowerShell \ 6 \ pwsh.exe" -WorkingDirectory D: \ test
cem kaan

179

Crea un profilo PowerShell come segue.

  1. Esegui PowerShell come amministratore ed esegui il comando seguente:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    Ciò consentirà a PowerShell di eseguire script locali e script scaricati da Internet che sono stati firmati. Maggiori informazioni su questo comando nella documentazione .

  2. Nella Documentscartella, trova una cartella denominata WindowsPowerShellper PowerShell classico o PowerShellper PowerShell Core più recente. Se non esiste, va bene; crealo e basta.

  3. Crea un nuovo file denominato profile.ps1nella WindowsPowerShellcartella (o PowerShellper PowerShell Core).
  4. Apri profile.ps1e aggiungi il seguente comando per impostare la directory di lavoro predefinita:

    Set-Location C:\my\default\working\directory
  5. Apri una nuova finestra di PowerShell ... le modifiche dovrebbero avere effetto.


1
Ho provato questo, ma ottengo "profile.ps1 non può essere caricato perché l'esecuzione di script è disabilitata". Esiste un modo "sicuro" per abilitare gli script sicuri?
John Little il

3
Esegui: "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned" Puoi leggere informazioni a riguardo qui: technet.microsoft.com/en-us/library/ee176961.aspx Non consente l'esecuzione di script scaricati da Internet a meno che non provengano da un fonte.
LLL

7
Questo è un modo davvero brutto per farlo perché se hai uno script di build, ad esempio (come lo script di build di Visual Studio) e desideri eseguire un comando ps, la directory di lavoro del comando sarebbe impostata su quella posizione, quindi fondamentalmente rompere tutti gli script utilizzando PowerShell comepowershell -File "myscript.ps1"
Santhos

2
Se questa è una cattiva opzione, c'è un modo migliore / più sicuro per farlo?
Adam_G

4
Lascia che mi corregga. Quando si scrivono script PowerShell, ad esempio per la compilazione, utilizzare sempre l'opzione -NoProfile comepowershel -NoProfile -File "myscript.ps1"
Santhos

33

Avevo provato le risposte di cui sopra in Windows Server 2016 senza successo.

Ma ho trovato questo approccio (dovrebbe essere lo stesso per Windows 10) funzionante per me.

  1. Avvia una sessione di PowerShell
  2. Nella barra delle applicazioni, fai clic con il pulsante destro del mouse e aggiungi per mantenere un collegamento lì
  3. Fare nuovamente clic con il pulsante destro del mouse sull'icona nella barra delle applicazioni, quindi fare clic con il pulsante destro del mouse su Windows PowerShell e scegliere Proprietà
  4. Immettere la directory preferita nel campo di immissione Avvia in: e premere OK
  5. Inizia dall'icona sulla barra delle applicazioni

Fatto!

Nella stessa finestra di dialogo Proprietà puoi anche modificare molte altre impostazioni come caratteri, colori, dimensioni e nella scheda Collegamento lì tramite il pulsante Advanced. È possibile selezionare se quella sessione di PowerShell deve essere eseguita con privilegi di amministratore.


5
La modifica della directory di lavoro sembra non funzionare quando si controlla Run as administratornel .lnkmenu avanzato. La soluzione sembra essere qui stackoverflow.com/questions/31622469/...
Santhos

È strano, perché qui funziona. Appena testato cambiando la directory e cambiando la Run as aministratorcasella di controllo avanti e indietro.
neongrau

Funziona un fascino. Grazie.
Yasser Shaikh

12

Un modo più semplice per impostare la directory predefinita è il seguente:

  1. Fare clic con il pulsante destro del mouse sull'icona di Windows PowerShell e appuntare su Start
  2. Fare clic con il pulsante destro del mouse sull'icona di Windows PowerShell in Start, quindi fare nuovamente clic con il pulsante destro del mouse su Windows PowerShell e selezionare Proprietà (non Esegui come amministratore e non Windows PowerShell ISE )

    Inserisci qui la descrizione dell'immagine

    1. Nella scheda Collegamento -> campo "Avvia in", passare alla posizione in cui si desidera avviare PowerShell.

    Inserisci qui la descrizione dell'immagine


Ooh grazie, mi piace questa risposta. Mi ha aiutato a capire perché e quale directory è stata impostata come "predefinita". Penso che questa soluzione riduca anche leggermente il tempo di caricamento del profilo (non sono sicuro che sia vero o no, ma sembra).
Jennings,

4

Inserendo il Set-Locationtuo profilo cambierà incondizionatamente la directory di lavoro corrente, il che potrebbe avere conseguenze indesiderate per quanto riguarda la directory di lavoro per gli script che esegui tramite "run with PowerShell".

Una soluzione alternativa consiste nel modificare la directory di lavoro per i .lnkfile in PowerShell che di solito si trova in %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell. Fare clic con il pulsante destro del mouse su un collegamento e modificare la directory di lavoro da %HOMEDRIVE%%HOMEPATH%alla directory desiderata.


1
La modifica della directory di lavoro sembra non funzionare quando si controlla Run as administratornel .lnkmenu avanzato. La soluzione sembra essere qui stackoverflow.com/questions/31622469/...
Santhos

Questa è la soluzione migliore (almeno per me).
Anders Arpi

Questo è il motivo per cui gli script dovrebbero usare l' -NoProfileopzione come powershell -NoProfile -File "myscript.ps1"
Santhos

4

Digita questo in PowerShell:

New-Item -path $profile -type file force

Crea un file .ps1 nella cartella PowerShell. Aprilo e modificalo come:

Set-location C:\files

Fatto

Fare riferimento a questo collegamento. Funziona bene.

Cambia la directory di avvio di PowerShell


3

Invece di modificare incondizionatamente la directory di lavoro come indicato nelle risposte precedenti, è possibile scrivere una semplice funzione nel profilo di PowerShell da utilizzare Set-Locationper modificare rapidamente la directory di lavoro ogni volta che è necessario.

Controlla la risposta di Jeremy Danyow per creare / modificare un profilo PowerShell.

Aggiungi una o più funzioni al tuo profilo PowerShell:

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

Basta cambiare il nome della funzione e la directory a cui punta. L'utilizzo delle virgolette sul percorso è obbligatorio se contiene spazi. Cerco di mantenere il prefisso goto_in quanto aiuta a ricordare i nomi delle funzioni.

Puoi iniziare a digitare, goto_quindi premere TAB per scorrere tutte le funzioni aggiunte (ricordati di avviare una nuova finestra di PowerShell dopo aver aggiunto / modificato le funzioni).


1

Usando solo la riga di comando, se un file esiste già, verrà aggiunto ad esso:

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

1

Con ciò, sembra esserci un po 'di confusione sulla "directory di lavoro" e sulla "posizione" di PowerShell. Quello che la maggior parte delle persone qui sta facendo e dice di fare è cambiare la "posizione" di PowerShell. La "directory di lavoro" è effettivamente diversa. Ecco un articolo che lo spiega.

Per coloro che non vogliono leggere l'articolo: apri PowerShell e usa ciò che altri hanno detto di fare Set-Location "C:\some\directory". Si noti che la "directory di lavoro" è ancora quella in cui è stato aperto PowerShell. In entrambi i casi "~"o a "%SYSTEMROOT%\system32"seconda che tu abbia eseguito come amministratore o meno. Per controllare la directory di lavoro, usa [Environment]::CurrentDirectory.

Nota: nell'articolo l'autore dice di controllare la "directory di lavoro" utilizzando questo comando:

\[Environment\]::CurrentDirectory

Non sono sicuro che funzioni con le versioni precedenti di PowerShell, ma con PowerShell 5 (e versioni successive) devi usare [Environment]::CurrentDirectory.


0

Rendi questa la prima riga nel tuo Profile.ps1 e PowerShell Core (pwsh) si aprirà nella directory in cui stai attualmente lavorando:

set-location (get-location) .path


0

Uscita di scrittura "Set-Location C: \" >> $ profile


0

Questa soluzione imposta la cartella di lavoro corrente nella posizione in cui si trova lo script. Assicurati di posizionarlo all'inizio del tuo script, o almeno prima di provare a utilizzare il comando che si basa sul percorso della posizione.

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.