Powershell – początki i prosty skrypt

Ostatnio na spotkaniu wroc.net jeden z wykładów był o powershell, w depeszowym skrócie to dos na sterydach. Postanowiłem dowiedzieć się o nim trochę więcej. Prowadzący powiedział, że na stronie powershell.com jest dostępna darmowa książka i rzeczywiście jest. Dodatkowo warto zapoznać się z dedykowanym edytorem dla power shell, którym jest PowerGUI, pozwala na debugowanie z praca krokową, breakpointy w skrypcie, podglądanie zmiennych i wiele inncyh dobroci, które ułatwiają pracę ze skryptem. Jeszcze żeby trochę zafisiować polecam ładną oprawę graficzną zamiast zwykłej linii poleceń – console2. Można ustawić sobie aby domyślnym interpreterem był powershell i korzystać z dobrodziejstw fikuśnego GUI dla konsolki.
Mój pierwszy skrypt, nie jest programem hello world, czasem trzeba złamać tradycję. Potrzebowałem prostego czegoś, aby móc przejść po plikach w aktualnym katalogu i wykonać na nich jakąś operację. Chciałem także, aby użytkownik mógł dowolnie wracać i przechodzić do kolejnych plików. Tak oto powstał ten skrypt, który umożliwia nawigację za pomocą strzałek na klawiaturze, oraz zakończenie pracy przez wduszenie guzika z napisem ESC.
Tym razem komentarze w kodzie 🙂
Niestety nie mam niczego, co by pokolorowało kod, a sam artystą nie jestem, także dzisiaj wersja notepad.

cls
Write-Host “Press left or right to iterate through xxx files, ESC to stop” -ForegroundColor DarkGreen

# interesuja mnie tylko pliki .xxx
# w powershell nie ma >, <, = odpowiada im -gt, -lt, -eq
for( $i=0; $i -lt (Get-ChildItem -Filter *.xxx).Count; )
{
    $filename = (Get-ChildItem -Filter *.xxx)[$i]

    # pomocniczy output dla uzytkownika, nazwa pliku
    Write-Host $filename

    # uruchomienie aplikacji z aktualnie wybranym plikiem
    # w moim przypadku bl.exe jest aplikacja konsolowa, nie kradnie mi focusa
    # troche gorzej jest gdy aplikacja jest okienkowa,
    # sprawdzcie na przykladzie przegladarki zdjec
    ./bl.exe $filename

    # chyba najwazniejsza czesc: oczekiwanie na wcisniecie guzika
    # trick znalazlem http://technet.microsoft.com/en-us/library/ee692948.aspx
    $c = $host.UI.RawUI.ReadKey(“NoEcho,IncludeKeyDown”)

    # chce zakonczyc tylko ESC, ciagle lewo czy ciagle prawo
    # bedzie korzystac ponownie z pierwszego/ostatniego pliku
    switch(($c).VirtualKeyCode)
    {
        37 # key left
        {
            $i–
            if($i -lt 0 )
            {
                $i=0
            }
        }
        39 # key right
        {
            $i++
            if($i -gt (Get-ChildItem -Filter *.xxx).Count – 1 )
            {
                $i = (Get-ChildItem -Filter *.xxx).Count -1
            }
        }
        27 # ESC key
        {
            $i = (Get-ChildItem -Filter *.xxx).Count
        }
    }
}
# buziaki i pozdrowienia
Write-Host jsthedeveloper pozdrawia

Właśnie zauważyłem, że istnieje także dodatek do VS, który koloruje składnie power shell. Jest to produkt chyba tego samego koleżki co stworzył PowerGui.
Podsumowując: polecam zabawę z power shellem, daje całkiem sporo możliwości, taki .net w skrypcie. Książkę, które jest dostępna także warto przeczytać, poklikać kilka przykładów, zobaczyć jak to się je i co można osiągnąć.
Rzuciłem jeszcze okiem na Wikipedię co tam w dołączonych linkach jest i proszę: pięć części filmideł o tym jak pisać skrypty. Także jak ktoś nie lub za dużo czytać, to może pooglądać.

Tyle w temacie początków.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.