Zmienne w PowerShellu, czyli jak przechowywać wyniki i dane?

Zmienne w PowerShellu

Czym jest zmienna?

Rodzaje zmiennych

Typy zmiennych

Zasięg Zmiennych

Wyświetlenie wszystkich zmiennych w danej sesji

PS C:\Users\Admin> Get-Variable

Name                           Value
----                           -----
?                              True
^
$
args                           {}
ConfirmPreference              High
DebugPreference                SilentlyContinue
EnabledExperimentalFeatures    {}
Error                          {}
ErrorActionPreference          Continue
ErrorView                      ConciseView
ExecutionContext               System.Management.Automation.EngineIntrinsics
false                          False
FormatEnumerationLimit         4
HOME                           C:\Users\Admin
Host                           System.Management.Automation.Internal.Host.InternalHost
InformationPreference          SilentlyContinue
input                          System.Collections.ArrayList+ArrayListEnumeratorSimple
IsCoreCLR                      True
IsLinux                        False
IsMacOS                        False
IsWindows                      True
MaximumHistoryCount            4096

Utworzenie nowej zmiennej

PS C:\Users\Admin> $moja_zmienna = "Hello, PowerShell!"
PS C:\Users\Admin> $numer = 42
PS C:\Users\Admin> $procesy = Get-Process
PS C:\Users\Admin> New-Variable -Name Nowa_zmienna -value 123
# Tworzenie tablicy z liczbami [array]
PS C:\Users\Admin> $Liczby = 1, 2, 3, 4
PS C:\Users\Admin> [array]$MojaTablica = 1, 2, 3, 4

# Sprawdzenie typu danych używając funkcji GetType()
PS C:\Users\Admin> $Liczby.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

PS C:\Users\Admin> $MojaTablica.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

Korzystanie ze zmiennych automatycznych

# Wyświetlenie informacji o wersji PowerShella
PS C:\Users\Admin> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.5.3
PSEdition                      Core
GitCommitId                    7.5.3
OS                             Microsoft Windows 10.0.26100
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
# Generowanie liczb od 1 do 5 i wyświetlenie bieżącej liczby
PS C:\Users\Admin> 1..5 | ForEach-Object {Write-Host "Bieżąca liczba: $_"}
Bieżąca liczba: 1
Bieżąca liczba: 2
Bieżąca liczba: 3
Bieżąca liczba: 4
Bieżąca liczba: 5

Zarządzanie zmiennymi za pomocą cmdletów

# Utworzenie nowej zmiennej za pomocą cmdletu Set-Variable
PS C:\Users\Admin> Set-Variable -Name MojaSciezka -Value "C:\temp"

# Wyświetlenie zmiennej
PS C:\Users\Admin> Get-Variable MojaSciezka

Name                           Value
----                           -----
MojaSciezka                    C:\temp

# Usunięcie danych przechowywanych w zmiennej (resetowanie wartości)
PS C:\Users\Admin> Clear-Variable MojaSciezka
PS C:\Users\Admin> Get-Variable MojaSciezka # Pokaże zmienną z pustą wartością

Name                           Value
----                           -----
MojaSciezka 

# Całkowite usunięcie zmiennej z sesji
PS C:\Users\Admin> Remove-Variable MojaSciezka
PS C:\Users\Admin> Get-Variable MojaSciezka # Pokaże błąd, ponieważ zmienna już nie istnieje
Get-Variable: Cannot find a variable with the name 'MojaSciezka'.  

Użycie zasięgu zmiennej

# Zadeklarowanie zmiennej w zasięgu globalnym
PS C:\Users\Admin> $global:GlobalnaZmienna = "Jestem dostępna wszędzie"

# Wyświetlenie zmiennej z dowolnego miejsca w bieżącej sesji
PS C:\Users\Admin> Write-Host $global:GlobalnaZmienna
Jestem dostępna wszędzie

Zapisanie przefiltrowanych usług

PS C:\Users\Admin> $runningServices = Get-Service | Where-Object {$_.Status -eq 'Running'}
PS C:\Users\Admin> $runningServices | Select-Object Name -First 5

Podsumowanie


To wszystko na dziś!

Jeśli masz ciekawe spostrzeżenia lub doświadczenia w tym temacie – koniecznie podziel się nimi w komentarzach.
A jeśli moje materiały są dla Ciebie pomocne, możesz postawić mi wirtualną kawę.

Dzięki za wsparcie!

Postaw mi kawę na buycoffee.to

Adam Pietrzak

Trener IT | Autor szkoleń | Entuzjasta PowerShella

Administrator systemów i sieci wsparcia działań wojskowych z ponad 10-letnim doświadczeniem. Praktyk w dziedzinie bezpieczeństwa systemu Windows, automatyzacji zadań (PowerShell) oraz rozwiązań chmurowych. Trener i twórca materiałów edukacyjnych (szkolenia, warsztaty, artykuły, podręczniki). Pasjonat dzielenia się wiedzą i wspierania początkujących administratorów IT. Prywatnie – amator aktywnego wypoczynku i rodzinnych podróży.


PowerShell - 10 sposobów na optymalizację codziennej pracy
Podziel się

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *