Ce face Variabile și tipuri
O variabilă PowerShell începe cu $ și se creează la prima atribuire: $nume = 'Ana'. Nu declari tipul; variabila ține obiectul .NET primit (un String, un Int32, un fișier, o listă de procese). Numele nu țin cont de majuscule ($Nume și $nume sunt aceeași variabilă). Tipul îl afli cu .GetType() sau, mai scurt, cu .GetType().Name.
Poți lega o variabilă de un tip punând tipul în față: [int]$nota = '9' convertește textul în număr, iar o atribuire ulterioară cu o valoare care nu se poate converti dă eroare. Tipurile uzuale: [int], [long], [double], [decimal] (pentru bani), [string], [bool], [datetime], [array], [hashtable]. Aceeași sintaxă, fără variabilă, face o conversie: [int]'42'. La operatorul + contează tipul din stânga: '9' + 1 lipește texte, 1 + '9' adună numere.
Între ghilimele duble, variabilele se înlocuiesc cu valoarea lor ("Salut, $nume"); între ghilimele simple, textul rămâne exact cum e scris. Pentru expresii folosește $(...): "Total: $($pret * 2) lei". PowerShell are și variabile automate, create de el: $null (lipsa unei valori), $true, $false, $HOME, $PWD, $PSVersionTable, $Error, $_, iar din PowerShell 6 și $IsWindows, $IsLinux, $IsMacOS. Documentația le consideră doar pentru citire: nu le atribui valori.
Parametri
| Parametru | Descriere |
|---|---|
$nume = valoare |
Creează sau suprascrie variabila. |
[int]$nume = valoare |
Variabilă legată de un tip; valorile noi sunt convertite la acel tip. |
.GetType() |
Tipul .NET al valorii; .GetType().Name dă doar numele scurt. |
$null |
Lipsa unei valori. Testează cu $null -eq $x (cu $null în stânga). |
$true / $false |
Valorile booleene. Textul 'false' nu este fals: un șir nevid se evaluează ca adevărat. |
"...$var..." |
Ghilimele duble: înlocuiesc variabilele și expresiile $(...). |
'...' |
Ghilimele simple: text literal, fără înlocuiri. |
$PSVersionTable |
Informații despre versiunea PowerShell care rulează. |
Exemple
Exemplul 1: Tipul ales automat
PowerShell alege tipul după valoare: text, număr întreg sau număr cu zecimale.
$nume = 'Ana'
$varsta = 21
$nume.GetType().Name
$varsta.GetType().Name
$nota = 9.5
$nota.GetType()
Ieșire în terminal
String
Int32
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Double System.ValueType
Exemplul 2: Conversii și ordinea operanzilor
Primul rând lipește texte, al doilea convertește textul la număr pentru că în stânga e un număr, iar al treilea folosește o variabilă legată de [int].
'9' + 1
1 + '9'
[int]$nota = '9'
$nota + 1
Ieșire în terminal
91
10
10
Exemplul 3: Date, $null și variabile automate
Conversia la [datetime] a unui text în format ISO funcționează indiferent de limba sistemului. $oras nu a fost creată, deci are valoarea $null.
$data = [datetime]'2026-10-25'
$data.DayOfWeek
$null -eq $oras
$PSVersionTable.PSVersion.Major
"Folderul personal: $HOME"
Ieșire în terminal
Sunday
True
7
Folderul personal: C:\Users\ana
Greșeli frecvente
- Să scrii
$x -eq $nullcând$xpoate fi un tablou: comparația filtrează tabloul în loc să întoarcăTrue/False. Pune$nullîn stânga:$null -eq $x. - Să folosești ghilimele simple când vrei înlocuirea variabilei:
'Salut, $nume'afișează exactSalut, $nume. - Să scrii
"Total: $pret * 2"și să aștepți rezultatul calculului: în text se înlocuiește doar variabila. Folosește"Total: $($pret * 2)". - Să citești numere din fișiere sau de la
Read-Hostși să le aduni direct: sunt texte, deci'9' + '1'dă91. Convertește-le cu[int]sau[decimal].
Comenzi înrudite
Tablouri (@()): Un tablou ține mai multe valori; îl creezi cu virgule sau @(), îl citești cu [index], iar += creează de fiecare dată un tablou nou.Hashtable (@{}): Un hashtable ține perechi cheie-valoare; [ordered] păstrează ordinea cheilor, iar [pscustomobject] transformă perechile într-un obiect.Operatori de comparație: PowerShell compară cu -eq, -ne, -gt, -lt, -like, -match, -contains, -in, nu cu = sau >; implicit nu ține cont de majuscule.Get-Member: Arată tipul obiectelor dintr-un pipeline și ce proprietăți și metode au, ca să știi ce poți selecta, filtra sau apela.Get-Date: Get-Date întoarce data și ora curentă (sau una dată) ca obiect [datetime], pe care îl formatezi cu -Format și îl calculezi cu .AddDays().