15Sep

Geek School: Pisanie swojego pierwszego pełnego skryptu PowerShell

click fraud protection

Kilka tygodni temu The Geek pokazał ci, jak możesz użyć wiersza poleceń, aby znaleźć czas ostatniego uruchomienia komputera. W tej ostatniej instalacji Geek School for PowerShell zamierzamy napisać polecenie PowerShell wielokrotnego użytku, aby zrobić to samo.

Przeczytaj poprzednie 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 w programie PowerShell
  • Naucz się korzystać z usługi Remoting wPowerShell
  • Używanie PowerShell do uzyskiwania informacji z komputera
  • Praca z kolekcjami w PowerShell
  • Nauka korzystania z zadań w PowerShell
  • Dowiedz się jak rozszerzyć PowerShell
  • Nauka PowerShell Zmienne, wejście i wyjście

Pisanie pierwszego skryptu

Pierwszą rzeczą, którą musimy zrobić, toznaleźć sposób na uzyskanie dostępu do informacji, których szukamy. Ponieważ mamy do czynienia z informacjami o zarządzaniu, prawdopodobnie powinniśmy przyjrzeć się używaniu WMI, która rzeczywiście ma klasę Win32_OperatingSystem, która pozwala przeglądać szczegółowe informacje o systemie operacyjnym, w tym o ostatnim uruchomieniu.

instagram viewer

Teraz, gdy wiemy, gdzie możemy znaleźć informacje, których szukamy, otwórz ISE i wpisz:.

Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |

Select-Object -Property CSName, LastBootUpTime

Uwaga: Musiałem podzielić mój kod na dwa wiersze, aby wszystko pasowało do zrzutu ekranu, ale możesz je wpisać w jednej linii. Jeśli zdecydujesz się podzielić to na dwie linie, upewnij się, że znak rury jest ostatnim znakiem na linii 1.

Teraz kliknij zielony przycisk "Uruchom skrypt" lub naciśnij klawisz F5 na klawiaturze, aby przetestować kod. Czasy WMI

mogą być trochę zagadkowe. Rozumie się przez to, że jeśli spojrzysz na właściwość LastBootUpTime, to 2013-03-19 o 18:26:21, ale z jakiegoś powodu faceci WMI postanowili połączyć to wszystko w jeden ciąg znaków. Na szczęście dla nas nie musimy się martwić ręcznym analizowaniem łańcucha, ponieważ jest to łatwiejszy sposób, aczkolwiek bardziej zaawansowany. Będziesz musiał zmienić część Select-Object kodu, aby wyglądała następująco:

Select-Object -Property CSName, @{ n = "Last Boot";

e ={ [Management. ManagementDateTimeConverter]: : ToDateTime( $ _. LastBootUpTime)}}

Tutaj robimy tworzenie niestandardowej właściwości o nazwie "Last Booted" i określamy, że jej wartość musi być wynikiem wywołania ToDateTime staticmetoda we właściwości LastBootUpTime bieżącego obiektu potoku. Twój kod powinien wyglądać teraz tak.

Uruchomienie teraz kodu przyniesie znacznie bardziej czytelny czas ostatniego rozruchu.

Teraz, gdy jesteśmy zadowoleni z podstawowej funkcjonalności naszego skryptu, musimy go zapisać.Dla uproszczenia, zapiszmy to jako:

C: \ Get-LastBootTime.ps1

Teraz przejdź do dolnej połowy ISE i uruchom następujące:

C: \ Get-LastBootTime.ps1

Świetnie! Nasz skrypt działa zgodnie z oczekiwaniami, ale wciąż jest jeden problem z naszym skryptem. Naprawiliśmy nazwę komputera, dla którego chcemy uzyskać ostatni czas rozruchu. Zamiast wartości kodowania twardego powinniśmy raczej podać parametr, aby ktokolwiek korzystał ze skryptu, mógł wybrać, na którym komputerze uruchamiają skrypt. Aby to zrobić, przejdź do początku skryptu i wykonaj następujące czynności. Parametr

(
[ciąg] $ NazwaKomputera
)

Następnie należy zastąpić zakodowaną wartość localhost wartością $ NazwaKomputera. Twój skrypt powinien wyglądać teraz tak:

Zapisz swój skrypt, a następnie wróć do dolnej połowy ISE i zobacz pomoc dla skryptu.

pomaga C: \ Get-LastBootTime.ps1

Awesome, więc teraz możemy określić nazwę komputera, dla którego chcemy uzyskać ostatni czas rozruchu przy użyciu naszego nowego parametru ComputerName. Niestety, wciąż jest kilka błędów. Po pierwsze, parametr ComputerName jest opcjonalny, a po drugie, jest to najgorsza pomoc, jaką kiedykolwiek widziałem, więc szybko naprawmy te problemy. Aby parametr ComputerName był obowiązkowy, zmień zawartość bloku parametrów na następujące.

[Parametr( Obowiązkowe = $ prawda)] [ciąg] $ NazwaKomputera

Jeśli chodzi o tworzenie lepszego pliku pomocy, najczęściej stosowaną metodą jest korzystanie z pomocy opartej na komentarzach. Oznacza to, że dodajemy dodatkowy długi komentarz do początku skryptu.

& lt; #
. SYNOPSIS
Pokazuje, kiedy ostatnio uruchomiłeś komputer.
. DESCRIPTION
Jest to funkcja wrappera WMI, aby uzyskać czas ostatniego uruchomienia komputera.
. PARAMETER NazwaKomputera
Nazwa komputera, na którym polecenie ma zostać uruchomione.
. EXAMPLE
Get-LastBootTime - nazwa_komputera localhost
. LINK
www.howtogeek.com
# & gt;

Gdy wszystko to zrobisz, powinieneś skończyć skryptem wyglądającym tak.

Przejdźmy teraz do naszego nowego pliku pomocy.

Ahhh, wygląda świetnie! Skoro nasz skrypt jest już gotowy, mamy jeszcze jedną rzecz do zrobienia: testowanie. W tym celu wyjdę z ISE i wrócę do konsoli PowerShell, abyśmy mogli upewnić się, że nie ma żadnych anomalii.

Jeśli zaczynasz od prostej liniowej i po prostu budujesz na niej tak, jak zrobiliśmy to w tym przewodniku, otrzymasz ją w mgnieniu oka. To wszystko na ten czas, ludzie, do zobaczenia w następnej instalacji Geek School.