
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:
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.
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.
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ę”
Cokolwiek wprowadzisz, zostanie zapisane w zmiennej.
Zapisywanie danych wyjściowych jest równie łatwe dzięki cmdletowi Write-Output.
Write-Output „How-To Geek Rocks!”
Dołącz do nas jutro, gdzie łączymy wszystko, czego się nauczyliśmy!