Gdy odejdziemy od zwykłego uruchamiania poleceń i przechodzenia do pisania pełnych skryptów, będziesz potrzebował tymczasowego miejsca do przechowywania danych. Tutaj pojawiają się zmienne.
Przeczytaj poprzednie artykuły z serii:
I pozostańcie czujni przez resztę serii przez cały tydzień.
Większość języków programowania pozwala na użycie zmiennych, które są po prostu pojemnikami przechowującymi wartości. W PowerShellu mamy również zmienne i są one naprawdę łatwe w użyciu. Oto jak utworzyć zmienną o nazwie "FirstName" i nadać mu wartość "Taylor".
$ FirstName = "Taylor"
Pierwszą rzeczą, o którą większość ludzi pyta, jest to, dlaczego umieszczamy znak dolara przed nazwą zmiennej, a to właściwie bardzo dobre pytanie. Naprawdę, znak dolara jest tylko małą wskazówką dla powłoki, do której chcemy uzyskać dostęp do zawartości zmiennej (pomyśl, co znajduje się w pojemniku), a nie do samego kontenera. W PowerShell nazwy zmiennych nie zawierają znaku dolara, co oznacza, że w powyższym przykładzie nazwa zmiennej jest w rzeczywistości "FirstName".
W PowerShell możesz zobaczyć wszystkie zmienne, które utworzyłeś w zmiennej PSDrive.
zmienna gci:
Co oznacza, że możesz również usunąć zmienną ze powłoki w dowolnym momencie:
Zmienna Remove-Item: \ FirstName
Zmienne nie muszą również zawierać jednego obiektu; możesz równie łatwo przechowywać wiele obiektów w zmiennej. Na przykład, jeśli chcesz zapisać listę uruchomionych procesów w zmiennej, możesz po prostu przypisać jej wynik działania Get-Process.
$ Proc = Get-Process
Sztuką do zrozumienia tego jest pamiętanie, że prawa strona znaku równości jest zawsze oceniana jako pierwsza. Oznacza to, że możesz mieć cały rurociąg po prawej stronie, jeśli chcesz.
$ CPUHogs = Get-Process | Sortuj CPU -Descending | wybierz -First 3
Zmienna CPUHogs będzie teraz zawierała trzy działające procesy z największą liczbą procesorów.
Kiedy masz zmienną trzymającą kolekcję obiektów, musisz wiedzieć o kilku rzeczach. Na przykład wywołanie metody na zmiennej spowoduje jej wywołanie w każdym obiekcie w kolekcji.
$ CPUHogs.Kill ()
Który zabiłby wszystkie trzy procesy w kolekcji. Jeśli chcesz uzyskać dostęp do pojedynczego obiektu w zmiennej, musisz traktować go jak tablicę.
$ CPUHogs [0]
Wykonanie tego da ci pierwszy przedmiot w kolekcji.
Zmienne w PowerShell są słabo wpisywane domyślnie, co oznacza, że mogą zawierać jakiekolwiek dane, to wydaje się przyciągać nowych graczy do PowerShell cały czas!
$ a = 10
$ b = '20'
Mamy więc dwie zmienne, jedna zawiera ciąg, a druga jest liczbą całkowitą. Co się stanie, jeśli je dodasz? To zależy od tego, w jakiej kolejności je dodasz.
$ a + $ b = 30
Podczas
$ b + $ a = 2010
W pierwszym przykładzie pierwszym operandem jest liczba całkowita, $ a, więc PowerShell uważa, że próbujesz wykonać matematykę i dlatego próbuje przekonwertować dowolne inne operandy na liczby całkowite. Jednak w drugim przykładzie pierwszy operand jest ciągiem, więc PowerShell po prostu konwertuje pozostałe operandy na łańcuchy i łączy je. Bardziej zaawansowani skrypciacze zapobiegają tego rodzaju problemom, przesyłając zmienną do oczekiwanego typu.
[int] $ Liczba = 5
[int] $ Number = '5'
Powyższe spowoduje, że zmienna Number zawiera obiekt liczby całkowitej o wartości 5.
Ponieważ program PowerShell ma za zadanie zautomatyzować operacje, nie należy monitować użytkowników o informacje w miarę możliwości. Powiedziawszy to, zdarzają się czasy, w których nie można tego uniknąć, a dla tych czasów mamy cmdlet Read-Host. Używanie go jest naprawdę proste:
$ FirstName = Read-Host -Prompt "Wpisz swoje imię"
Cokolwiek wprowadzisz, zostanie zapisane w zmiennej.
Zapisywanie danych wyjściowych jest równie proste dzięki cmdletowi Write-Output.
Write-Output "How-To Geek Rocks!"
Dołącz do nas jutro, gdzie połączymy wszystko, czego się nauczyliśmy razem!