Ce face $PROFILE
Profilul este un script .ps1 obișnuit pe care PowerShell îl rulează la fiecare pornire. Acolo pui ce vrei să ai mereu: aliasuri, funcții, variabile, module importate, un prompt personalizat. PowerShell nu creează fișierul; doar știe unde să-l caute, iar calea e în variabila automată $PROFILE.
$PROFILE singur înseamnă profilul „utilizatorul curent, aplicația curentă”. Pentru PowerShell 7 pe Windows este $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1, iar pe macOS și Linux ~/.config/powershell/Microsoft.PowerShell_profile.ps1. Celelalte profiluri sunt proprietăți ale variabilei: $PROFILE.CurrentUserAllHosts (comun pentru consolă și VS Code), $PROFILE.AllUsersCurrentHost și $PROFILE.AllUsersAllHosts (în $PSHOME, cer administrator). Windows PowerShell 5.1 folosește alt folder (Documents\WindowsPowerShell), deci are profil separat.
Pe Windows, profilul este tot un script, deci se supune politicii de execuție: cu Restricted nu se încarcă. Modificările se aplică la o sesiune nouă sau imediat, dacă reîncarci profilul cu dot-sourcing (. $PROFILE). Pornești PowerShell fără profil cu pwsh -NoProfile, util când profilul are o eroare.
Parametri
| Parametru | Descriere |
|---|---|
$PROFILE |
Utilizatorul curent, aplicația curentă (profilul folosit de obicei). |
$PROFILE.CurrentUserAllHosts |
Utilizatorul curent, toate aplicațiile (consolă, VS Code). |
$PROFILE.AllUsersCurrentHost |
Toți utilizatorii, aplicația curentă; în $PSHOME. |
$PROFILE.AllUsersAllHosts |
Toți utilizatorii, toate aplicațiile; în $PSHOME. |
pwsh -NoProfile |
Pornește o sesiune fără să încarce profilurile. |
Exemple
Exemplul 1: Unde este profilul și dacă există
Pe un Windows proaspăt instalat, fișierul nu există încă.
$PROFILE
Test-Path -Path $PROFILE
Ieșire în terminal
C:\Users\ana\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
False
Exemplul 2: Creezi profilul și adaugi o funcție
-Force creează și folderele lipsă. Ghilimelele simple păstrează textul neschimbat în fișier; dot-sourcing-ul reîncarcă profilul în sesiunea curentă.
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force | Out-Null
}
Add-Content -Path $PROFILE -Value 'function salut { "Salut, $env:USERNAME!" }'
. $PROFILE
salut
Ieșire în terminal
Salut, ana!
Exemplul 3: Profilul comun pe macOS
Profilul pentru toate aplicațiile stă în ~/.config/powershell, conform convenției XDG.
$PROFILE.CurrentUserAllHosts
Ieșire în terminal
/Users/ana/.config/powershell/profile.ps1
Greșeli frecvente
- Să editezi profilul din
Documents\WindowsPowerShellși să te aștepți să se încarce în PowerShell 7:pwshfoloseșteDocuments\PowerShell. - Să pui în profil comenzi lente (de exemplu importul multor module): fiecare consolă nouă pornește mai greu. Pornește cu
pwsh -NoProfileca să compari. - Să creezi profilul cu
New-Item $PROFILEfără-Forcecând folderulDocuments\PowerShellnu există: comanda eșuează. - Să ții folderul Documents sincronizat prin OneDrive sau redirecționat în rețea: documentația avertizează că poate face modulele și profilul să nu se încarce.
Comenzi înrudite
Set-ExecutionPolicy: Stabilește pe Windows dacă PowerShell are voie să ruleze scripturi .ps1; Unblock-File deblochează un script descărcat de pe internet.Funcții și param(): O funcție grupează cod sub un nume; param() îi declară parametrii, cu tip și valoare implicită, iar [CmdletBinding()] o face să meargă ca un cmdlet.Variabile și tipuri: Variabilele încep cu $, primesc orice obiect .NET și pot fi legate de un tip ([int], [string], [datetime]); .GetType() arată tipul.PowerShell pe macOS și Linux: Cum instalezi și pornești PowerShell 7 (pwsh) pe macOS și Linux și ce se comportă diferit față de Windows: aliasuri, majuscule, căi.