If-Koubou

Geek School: Pisanie swojego pierwszego pełnego skryptu PowerShell

Geek School: Pisanie swojego pierwszego pełnego skryptu PowerShell (Jak)

Kilka tygodni temu The Geek pokazał ci, jak możesz użyć wiersza poleceń, aby sprawdzić, kiedy twój komputer został uruchomiony jako ostatni. 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ń 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
  • Używanie PowerShell do uzyskiwania informacji o komputerze
  • Praca z kolekcjami w PowerShell
  • Dowiedz się, jak używać 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óra rzeczywiście ma klasę Win32_OperatingSystem, która pozwala przeglądać szczegółowe informacje o systemie operacyjnym, w tym o ostatnim uruchomieniu.

Skoro 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ć 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, 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 wyglądać teraz tak.

Uruchomienie 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 przełącz się na dolną połowę 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 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.

param (
[string] $ NazwaKomputera
)

Następnie zamień ustaloną wartość localhost na zmienną $ ComputerName. 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.

pomoc C: \ Get-LastBootTime.ps1

Niesamowite, więc teraz możemy określić nazwę komputera, na który 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, najpowszechniejszą 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.
.PARAMETER NazwaKomputera
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 tak.

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 to w mgnieniu oka. To wszystko na ten czas, ludzie, do zobaczenia w następnej instalacji Geek School.