18Aug
Zrozumienie obiektów jest jednym z podstawowych pojęć "uzyskiwania" PowerShell. Dołącz do nas, gdy odkrywamy obiekty i jak sprawiają, że PowerShell jest lepszy niż jakakolwiek inna obecnie dostępna.
Przeczytaj poprzednie artykuły z serii:
- Dowiedz się, jak zautomatyzować system Windows za pomocą PowerShell
- Nauka korzystania z poleceń cmdlet w PowerShell
Pozostań zestrojony przez resztę serii przez cały tydzień.
Obiekty
Czy kiedykolwiek zastanawiałeś się, co odróżnia PowerShell od tradycyjnej powłoki Linuksa, takiej jak Bash, czy nawet starszego wiersza poleceń?Odpowiedź jest bardzo prosta: tradycyjne powłoki generują tekst, co utrudnia wykonywanie takich czynności, jak formatowanie i filtrowanie. Oczywiście istnieją narzędzia, które pomogą Ci wykonać zadanie( sed i grep przychodzą na myśl), ale na koniec dnia, jeśli chcesz wykonać intensywne przetwarzanie tekstu, musisz znać wyrażenia regularne, takie jaktył twojej dłoni.
PowerShell wykorzystuje bazową strukturę. Net i przyjmuje inne podejście, używając obiektów zamiast tekstu. Obiekty są po prostu reprezentacją czegoś.Są zbiorem części i działań, aby z nich korzystać.Przyjrzyjmy się częściom roweru i sposobom ich wykorzystania.
Obiekty w. Net są bardzo podobne, z wyjątkiem dwóch małych różnic: "Części" są nazywane właściwościami , a "Instrukcje" nazywane są metodami .Jeśli chcielibyśmy reprezentować usługę Windows jako obiekt, możemy zdecydować, że właściwe jest opisanie jej za pomocą trzech właściwości: nazwy usługi, stanu i opisu. Musimy również wchodzić w interakcje z usługą, abyśmy mogli nadać obiektowi metodę Start, Stop i Pause.
Możesz zobaczyć właściwości i metody obiektu, przekazując go do cmdletu Get-Member. Obiekty wyjściowe polecenia cmdlet programu PowerShell są w dużej mierze podstawowymi typami ze środowiska. Net, ale można tworzyć własne obiekty, jeśli trzeba użyć języka takiego jak C # lub użyć typu PSObject.
Pipeline
Istnieje wiele powłok Linuxa z potokiem, co pozwala wysłać tekst, który jedno polecenie wyprowadza jako dane wejściowe do następnego polecenia w potoku. PowerShell przenosi to na wyższy poziom, umożliwiając pobranie obiektów, które wyprowadza jedno polecenie cmdlet i przekazanie ich jako danych wejściowych do następnego polecenia cmdlet w potoku. Sztuką jest wiedzieć, jaki typ obiektu zwraca polecenie cmdlet, co jest bardzo proste przy użyciu polecenia cmdlet Get-Member.
Get-Service |Get-Member
Z przyczyn wykraczających poza zakres tego artykułu właściwości i metody są wspólnie nazywane elementami klasy, co wyjaśnia, dlaczego używasz polecenia cmdlet Get-Member, aby uzyskać listę wszystkich metod i właściwości obiektu. Polecenie cmdlet Get-Member zwraca również inną ważną informację, typ obiektu bazowego. Na powyższym zrzucie widać, że Get-Service zwraca obiekty typu:
System. ServiceProcess. ServiceController
Ponieważ PowerShell zajmuje się obiektami, a nie tekstem, nie wszystkie cmdlety mogą być ze sobą połączone za pomocą potoku [1].Oznacza to, że musimy znaleźć cmdlet, który chce zaakceptować obiekt System. ServiceProcess. ServiceController z potoku.
Get-Command -ParameterType System. ServiceProcess. ServiceController
Zauważ, że istnieje cmdlet o nazwie Stop-Service;spójrzmy na pomoc dla niego.
Get-Help -Name Stop-Service
Wygląda na to, że parametr InputObject pobiera tablicę obiektów ServiceController jako dane wejściowe. Zwykle, jeśli widzisz parametr o nazwie InputObject, to będzie on akceptował dane wejściowe z potoku, ale dla pewności przyjrzyjmy się pełnej pomocy dla tego parametru.
Get-Help -Name Stop-Service -Full
Nasze podejrzenia były prawidłowe. W tym momencie wiemy, co następuje:
- Zwraca usługę Get Service ServiceController Obiekty
- Stop-Service ma parametr o nazwie InputObject, który akceptuje jeden lub więcej kontrolerów ServiceController jako dane wejściowe.
- Parametr InputObject akceptuje wejście potoku.
Korzystając z tych informacji, możemy wykonać następujące czynności:
Get-Service -Name "Urządzenie mobilne Apple'a" |Stop-Service
To wszystko na ten czas. Następnym razem sprawdzimy, jak możemy formatować, filtrować i porównywać obiekty w potoku.
Praca domowa
- Odczytać na rurociągu obiektowym
Jeśli masz jakieś pytania, możesz tweetować mnie @taybgibb, lub po prostu zostawić komentarz.