Geek School Pisze swój pierwszy pełny skrypt PowerShell
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 napiszemy komendę PowerShell wielokrotnego użytku, aby zrobić to samo.
Zapoznaj się z poprzednimi artykułami z serii:
- Dowiedz się, jak zautomatyzować system Windows za pomocą programu 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 Remotingu w PowerShell
- Korzystanie z PowerShell w celu uzyskania informacji o komputerze
- Praca z kolekcjami w PowerShell
- Dowiedz się, jak korzystać z zadań w PowerShell
- Dowiedz się, jak rozszerzyć PowerShell
- Nauka zmiennych PowerShell, wejście i wyjście
Pisanie swojego pierwszego skryptu
Pierwszą rzeczą, którą musimy zrobić, to znaleźć 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óry rzeczywiście ma klasę Win32_OperatingSystem, która pozwala przeglądać szczegółowe informacje o systemie operacyjnym, w tym o ostatnim uruchomieniu.
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 dwie linie, tak aby pasowały do zrzutu ekranu, ale możesz go wpisać w jednej linii. Jeśli zdecydujesz się podzielić to na dwie linie, upewnij się, że znak potoku 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ę tajemnicze. 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ęść kodu 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 metody statycznej ToDateTime we właściwości LastBootUpTime bieżącego obiektu potoku. Twój kod powinien teraz wyglądać tak.
Uruchomienie kodu przyniesie o wiele 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 wykonaj następujące czynności:
C: \ Get-LastBootTime.ps1
Świetny! 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 każdy, kto używa skryptu, mógł wybrać komputer, na którym uruchamia skrypt. Aby to zrobić, przejdź do początku skryptu i wykonaj następujące czynności.
param (
[string] $ 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 swojego skryptu.
pomoc C: \ Get-LastBootTime.ps1
Niesamowite, 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 (Mandatory = $ true)] [string] $ NazwaKomputera
Jeśli chodzi o tworzenie lepszego pliku pomocy, najczęstszą metodą jest skorzystanie z pomocy opartej na komentarzach. Oznacza to, że dodajemy dodatkowy długi komentarz do początku skryptu.
<#
.STRESZCZENIE
Pokazuje, kiedy ostatnio uruchomiłeś komputer.
.OPIS
Jest to funkcja opakowania usługi WMI, która pozwala uzyskać czas ostatniego uruchomienia komputera.
.PARAMETR ComputerName
Nazwa komputera, na którym chcesz uruchomić polecenie.
.PRZYKŁAD
Get-LastBootTime - nazwa_komputera localhost
.POŁĄCZYĆ
www.howtogeek.com
#>
Gdy wszystko to zrobisz, powinieneś skończyć skryptem wyglądającym w ten sposób.
Przejdźmy teraz i sprawdź nasz nowy plik pomocy.
Ahhh, świetnie wyglądasz! 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.