$PROFILE în PowerShell

Primii pași Windows PowerShell 1.0

Variabila $PROFILE conține calea scriptului care rulează la fiecare pornire a PowerShell, unde îți pui aliasurile și funcțiile.

Sintaxă
$PROFILE
$PROFILE.CurrentUserAllHosts
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }

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: pwsh folosește Documents\PowerShell.
  • Să pui în profil comenzi lente (de exemplu importul multor module): fiecare consolă nouă pornește mai greu. Pornește cu pwsh -NoProfile ca să compari.
  • Să creezi profilul cu New-Item $PROFILE fără -Force când folderul Documents\PowerShell nu 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.