If-Koubou

Geek School: Nauka zmiennych PowerShell, wejście i wyjście

Geek School: Nauka zmiennych PowerShell, wejście i wyjście (Jak)

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:

  • Dowiedz się, jak zautomatyzować system Windows za pomocą programu PowerShell
  • Nauka korzystania z poleceń cmdlet w PowerShell
  • Nauka korzystania z obiektów w PowerShell
  • Nauka formatowania, filtrowania i porównywania w PowerShell
  • Naucz się korzystać z Remotingu w PowerShell
  • Używanie PowerShell do uzyskiwania informacji o komputerze
  • Praca z kolekcjami w PowerShell

I pozostańcie czujni przez resztę serii przez cały tydzień.

Zmienne

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.

Nie daj się złapać!

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.

Wejście i wyjście

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!