Powershell ha qualche tipo di equivalente .bashrc?


22

Ho alcune funzioni che vorrei caricare per impostazione predefinita quando apro una PowerShell amministrativa. C'è qualche equivalente da dire .bashrco .profileche potrei usare per importare automaticamente gli script quando avvio la shell?



Sì, in Powershell è chiaramente chiamato "profilo".
radice

Risposte:


23

L'articolo menzionato nel commento di jehad spiega che esistono diversi punti da cui PowerShell può caricare un profilo, che è quello che desideri. Probabilmente vuoi quello per utente per la normale console di PowerShell. Il percorso in cui PowerShell controllerà quel file è indicato nella $profilevariabile. È possibile creare quel file e la relativa directory contenente con questo comando:

New-Item $profile -Type File -Force

Crea un file chiamato Microsoft.PowerShell_profile.ps1in una cartella chiamata WindowsPowerShellnella cartella Documenti. Quindi puoi aprirlo con un editor di testo:

notepad $profile

Tutto verrà eseguito ogni volta che avvierai la console di PowerShell, indipendentemente dal fatto che tu sia elevato o meno. Ho usato quest'altro articolo per produrre una funzione (che puoi usare come cmdlet) per verificare se l'attuale istanza di PowerShell è elevata. Inserisci questo nel tuo nuovo file di profilo:

Function Test-Elevated {
  $wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
  $prp = New-Object System.Security.Principal.WindowsPrincipal($wid)
  $adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
  $prp.IsInRole($adm)
}

Tale funzione può essere utilizzata nella normale esperienza di PowerShell, ma è anche possibile utilizzarla per eseguire elementi nello script del profilo solo quando si esegue l'elevazione:

If (Test-Elevated) {
  echo "Be careful!"
} Else {
  echo "Eh, do whatever."
}

Poiché questo file contiene codice che verrà eseguito automaticamente anche in un'istanza di PowerShell amministrativa, non si desidera che i programmi in esecuzione non pertinenti abbiano accesso in scrittura ad esso. Suggerisco di modificarne l'ACL per consentire l'accesso in sola lettura al proprio account utente pur consentendo agli amministratori il pieno controllo. (L'ereditarietà dovrà prima essere disabilitata.) Quindi sarai in grado di modificare lo script solo da programmi elevati.


3
Quel nome lungo può Microsoft.PowerShell_profile.ps1essere cambiato in solo profile.ps1? Nel primo articolo appare come$Home\[My ]Documents\WindowsPowerShell\Profile.ps1
nipote del
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.