Differenza nell'avvio di PowerShell tramite "Esegui" -GUI e Win + X
Se eseguo PowerShell come amministratore su Windows 10 v1909 e apporto modifiche alla finestra del terminale (ad esempio, cambiando il buffer), le modifiche vengono salvate come dovrebbe, ecco un esempio, cambiando la dimensione del buffer in 999
:

Ma solo se lo avvio allo "stesso modo". Una seconda procedura di avviamento sembra avere una propria "memoria" e non mi dà lo stesso risultato:
- Esegui la finestra di dialogo usando con il comando
powershell
e premendo Ctrl+ Shift+ OK per eseguire (per farlo funzionare come admin
contro
- Win + X Menu, scegliendo
Windows PowerShell (Administrator)
Cosa sta succedendo esattamente in modo diverso (internamente) quando si apre PowerShell attraverso l'uno o l'altro modo? Posso forzarlo ad aprire lo "stesso" Powershell utilizzando un interruttore con la finestra di dialogo Esegui?
La mia prima ipotesi è stata che ci fossero due copie powershell.exe
là fuori, ma entrambi i processi mostrano di aver avviato lo stesso binario in %WinDir%\System32\WindowsPowerShell\v1.0
, con uno visualizzato come PowerShell.exe
e l'altro powershell.exe
. Sembra una sorta di parametro attraverso le opzioni Win + X, per avviare un secondo profilo ?!
Risposte
Se avvii PowerShell direttamente eseguendo il suo eseguibile:
- 32 bit:
%SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe
- 64 bit:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
È infatti diverso dall'usare le scorciatoie fornite sotto ⊞ Win+ Xo dall'usare le scorciatoie che trovi nel menu di avvio quando cerchi "PowerShell". Questi collegamenti vengono memorizzati in %AppData%\Microsoft\Windows\Start Menu\Programs\Windows PowerShell
e forniscono le proprie impostazioni:

Torna alla tua domanda originale ... come per questo ...
Che cosa è esattamente diverso quando si apre PowerShell internamente
... non è affatto una cosa. Windows PowerShell fa parte del sistema operativo. L'avvio di PowerShell è lo stesso, qualunque cosa accada. Non esiste il concetto di avvio interno / esterno di PowerShell.
Quando si utilizza il comando Esegui cmd.exe, Win + X, ecc. Queste sono tutte nuove istanze di PowerShell ogni volta e non hanno nulla a che fare con l'archiviazione, ecc. Tutte le impostazioni effettuate in una sessione sono solo per quella sessione.
Se si desidera mantenere queste impostazioni, l'unico modo per farlo è creare collegamenti sul desktop o modificare i collegamenti esistenti (ovvero, fare clic con il tasto destro del mouse sul collegamento e fare clic su proprietà, proprio come faresti con qualsiasi altro collegamento di Windows) e imposta le proprietà che desideri.
Il secondo modo, per PowerShell, consiste nel creare e utilizzare i profili di PowerShell. Questo davvero 1 ora 1 in un corso di formazione su PowerShell.
Le directory di PowerShell non esistono finché non crei un profilo o le crei manualmente, è ciò che @ JW0914 sta cercando di dire qui. Avvia semplicemente powershell.exe e poi fallo ...
New-Item –Path $Profile –Type File –Force
.. avvia powershell_ise.exe e fai la stessa cosa e questo crea la directory 'WindowsPowerShell' ...
C: \ Users \ YourUserName \ Documents \ WindowsPowerShell
e i due profili saranno lì come
Microsoft.PowerShell_profile.ps1
Microsoft.PowerShellISE_profile.ps1
Questi sono solo file vuoti, di base come notato sarà una posizione in cui è possibile impostare qualsiasi preferenza si scelga e verranno utilizzati a meno che non si avvii powershell.exe o powershell_ise utilizzando il parametro -noprofile.
Consulta i documenti della guida di Powershell su di esso.
È un'altra versione di PowerShell chiamata PowerShell Core (pwsh.exe) ed è multipiattaforma (Win / OSX / Linux) ma non aggiorna / sostituisce Windows PowerShell. Sono progettati per funzionare fianco a fianco. Anch'esso ha i propri percorsi e profili, separati dai percorsi di Windows PowerShell.
C: \ Users \ YourUserName \ Documents \ PowerShell
Microsoft.PowerShell_profile.ps1
Non esiste ISE per PowerShell Core . La sostituzione per ISE per il core di PowerShell si chiama Visual Studio Code . E anch'esso ha il proprio profilo e questo deve essere nelle cartelle di PowerShell.
Microsoft.VSCode_profile.ps1