Differenza nell'avvio di PowerShell tramite "Esegui" -GUI e Win + X

Aug 21 2020

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 powershelle 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.exelà fuori, ma entrambi i processi mostrano di aver avviato lo stesso binario in %WinDir%\System32\WindowsPowerShell\v1.0, con uno visualizzato come PowerShell.exee l'altro powershell.exe. Sembra una sorta di parametro attraverso le opzioni Win + X, per avviare un secondo profilo ?!

Risposte

2 Thomas Aug 23 2020 at 18:44

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 PowerShelle forniscono le proprie impostazioni:

postanote Aug 23 2020 at 06:13

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