Ho alcune funzioni che vorrei caricare per impostazione predefinita quando apro una PowerShell amministrativa. C'è qualche equivalente da dire .bashrc
o .profile
che potrei usare per importare automaticamente gli script quando avvio la shell?
Ho alcune funzioni che vorrei caricare per impostazione predefinita quando apro una PowerShell amministrativa. C'è qualche equivalente da dire .bashrc
o .profile
che potrei usare per importare automaticamente gli script quando avvio la shell?
Risposte:
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 $profile
variabile. È 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.ps1
in una cartella chiamata WindowsPowerShell
nella 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.
Microsoft.PowerShell_profile.ps1
essere cambiato in solo profile.ps1
? Nel primo articolo appare come$Home\[My ]Documents\WindowsPowerShell\Profile.ps1