27Jul

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

W miarę oddalania się od zwykłych poleceń i przechodzenia do pisania pełnych skryptów, będziesz potrzebował tymczasowego miejsca do przechowywania danych. Tutaj pojawiają się zmienne.

Przeczytaj wcześniejsze artykuły z serii:

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

Pozostańcie czujni przez resztę serii przez cały tydzień.Zmienne

Większość języków programowania zezwala na użycie zmiennych, które są po prostu kontenerami 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.

gci zmienna:

Oznacza to, że możesz również usunąć zmienną z powłoki w dowolnym momencie:

Zmienna Remove-Item: \ FirstName

Zmienne nie muszą zawierać również pojedynczego 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

Aby to zrozumieć, należy pamiętać, że prawa strona znaku równości jest zawsze najpierw oceniana. Oznacza to, że możesz mieć cały rurociąg po prawej stronie, jeśli chcesz.

$ CPUHogs = Get-Process |Sortuj CPU -Descending |select -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 zabije wszystkie trzy procesy w kolekcji. Jeśli chcesz uzyskać dostęp do pojedynczego obiektu w zmiennej, musisz traktować go jak tablicę.

$ CPUHogs [0]

Dzięki temu otrzymasz pierwszy obiekt 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 przez 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 kolejności ich dodania.

$ a + $ b = 30

Podczas gdy

$ b + $ a = 2010

W pierwszym przykładzie pierwszy operand jest liczbą całkowitą, $ a, więc PowerShell myśli, że uważa, żepróbujesz zrobić matematykę i dlatego próbuje przekształcić dowolne inne operandy w 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] $ Number = 5
[int] $ Number = '5'

Powyższe spowoduje, że zmienna Number zawiera obiekt liczby całkowitej o wartości 5.

Dane wejściowe i wyjściowe

Ponieważ PowerShell ma za zadanie zautomatyzować rzeczy, będziesz chciał uniknąć monitowania użytkowników o informacje tam, gdzie to możliwe. 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 'Podaj 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 łączymy wszystko, czego się nauczyliśmy razem!