Skip to content

Geek School: nauka zmiennych PowerShell, danych wejściowych i wyjściowych

24 de lipiec de 2021
sshot5150b3c58b51f 1024x412 1

Ponieważ odchodzimy od zwykłego uruchamiania poleceń i przechodzimy do pisania pełnych skryptów, będziesz potrzebować tymczasowego miejsca do przechowywania danych. Tutaj pojawiają się zmienne.

Koniecznie przeczytaj poprzednie artykuły z serii:

  • Dowiedz się, jak zautomatyzować system Windows za pomocą 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 usług zdalnych w PowerShell
  • Używanie PowerShell do uzyskiwania informacji o komputerze
  • Praca z kolekcjami w PowerShell

I czekaj na resztę serii przez cały tydzień.

Zmienne

Większość języków programowania pozwala na użycie zmiennych, które są po prostu kontenerami przechowującymi wartości. W PowerShell też mamy zmienne i są one naprawdę łatwe w użyciu. Oto jak utworzyć zmienną o nazwie „FirstName” i nadać jej wartość „Taylor”.

$FirstName = „Taylor”

Pierwszą rzeczą, o którą pyta większość ludzi, jest to, dlaczego przed nazwą zmiennej umieszczamy znak dolara, a to właściwie bardzo dobre pytanie. Tak naprawdę znak dolara to tylko mała wskazówka dla powłoki, że chcemy uzyskać dostęp do zawartości zmiennej (pomyśl, co jest w pojemniku), a nie do samego pojemnika. W PowerShell nazwy zmiennych nie zawierają znaku dolara, co oznacza, że ​​w powyższym przykładzie nazwa zmiennej to w rzeczywistości „FirstName”.


W PowerShell możesz zobaczyć wszystkie zmienne, które utworzyłeś w zmiennej PSDrive.

zmienna gci:

1627126768 781 Geek School nauka zmiennych PowerShell danych wejsciowych i wyjsciowych

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

Zmienna usuwania elementu:FirstName

Zmienne nie muszą też zawierać pojedynczego obiektu; równie łatwo możesz przechowywać wiele obiektów w zmiennej. Na przykład, jeśli chcesz przechowywać listę uruchomionych procesów w zmiennej, możesz po prostu przypisać jej dane wyjściowe Get-Process.

$Proc = Pobierz-Proces

Sztuczka do zrozumienia tego polega na pamiętaniu, że prawa strona znaku równości jest zawsze oceniana jako pierwsza. Oznacza to, że jeśli chcesz, możesz mieć cały rurociąg po prawej stronie.

$CPUHogs = Pobierz-Proces | Sortuj CPU — malejąco | wybierz -Pierwszy 3

Zmienna CPUHogs będzie teraz zawierać trzy działające procesy wykorzystujące najwięcej procesora.

1627126768 459 Geek School nauka zmiennych PowerShell danych wejsciowych i wyjsciowych

Kiedy masz zmienną przechowującą kolekcję obiektów, musisz pamiętać o kilku rzeczach. Na przykład wywołanie metody na zmiennej spowoduje wywołanie jej na każdym obiekcie w kolekcji.

$CPUHogs.Kill()


Co zabiłoby wszystkie trzy procesy w kolekcji. Jeśli chcesz uzyskać dostęp do pojedynczego obiektu w zmiennej, musisz traktować go jak tablicę.

$CPUHogs[0]

W ten sposób otrzymasz pierwszy obiekt w kolekcji.

1627126769 864 Geek School nauka zmiennych PowerShell danych wejsciowych i wyjsciowych

Nie daj się złapać!

Zmienne w PowerShell są domyślnie słabo wpisane, co oznacza, że ​​mogą zawierać dowolne dane, co wydaje się łapać nowych użytkowników przez cały czas!

$a = 10

$b = ’20’

Mamy więc dwie zmienne, jedna zawiera łańcuch, a druga liczbę całkowitą. Co się stanie, jeśli je dodasz? W rzeczywistości zależy to od kolejności, w jakiej je dodasz.

$a + $b = 30

Podczas

$b + $a = 2010

W pierwszym przykładzie pierwszym operandem jest liczba całkowita $a, więc PowerShell myśli, że próbujesz wykonać matematykę i dlatego próbuje również konwertować 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 ciągi i łączy je. Bardziej zaawansowani skrypterzy zapobiegają tego rodzaju problemom, rzutując zmienną na oczekiwany typ.

[int]Liczba $ = 5
[int]$Liczba = '5′

Powyższe spowoduje, że zmienna Number będzie zawierać obiekt typu integer o wartości 5.

Wejście i wyjście

Ponieważ program PowerShell ma na celu zautomatyzowanie rzeczy, będziesz chcieć uniknąć monitowania użytkowników o informacje, gdy tylko jest to możliwe. Mając to na uwadze, będą chwile, w których nie będzie można tego uniknąć, a na te czasy mamy cmdlet Read-Host. Korzystanie z niego jest naprawdę proste:

$FirstName = Read-Host – Monit „Wprowadź swoje imię”

1627126769 723 Geek School nauka zmiennych PowerShell danych wejsciowych i wyjsciowych


Cokolwiek wprowadzisz, zostanie zapisane w zmiennej.

1627126769 876 Geek School nauka zmiennych PowerShell danych wejsciowych i wyjsciowych

Zapisywanie danych wyjściowych jest równie łatwe dzięki cmdletowi Write-Output.

Write-Output „How-To Geek Rocks!”

1627126769 644 Geek School nauka zmiennych PowerShell danych wejsciowych i wyjsciowych

Dołącz do nas jutro, gdzie łączymy wszystko, czego się nauczyliśmy!

Czy ten post był pomocny?