Variabile și tipuri în PowerShell

Variabile și tipuri Windows PowerShell 1.0

Variabilele încep cu $, primesc orice obiect .NET și pot fi legate de un tip ([int], [string], [datetime]); .GetType() arată tipul.

Sintaxă
$nume = valoare
[tip]$nume = valoare
$nume.GetType()

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 $null când $x poate 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ă exact Salut, $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().