o ile jestem gorącym zwolennikiem PS, o tyle w tych, wydawałoby się, najprostszych operacjach jest masakrycznie upierdliwy i nieintuicyjny. przykładem może być właśnie funkcjonalność aka ‘grep’ tego, co jest wypluwane. w przypadku PS są [co najmniej] dwie możliwości:

  • podstawowa to commandlet Select-String. no i fajno – wbudowany, grepuje, można sobie np. w pliq poszukać jakiegoś ciągu znaków. ponieważ jest ‘wbudowany’ pozwala na łatwe oskryptowanie… ale pojawia sie pewien problem: wszystko co zwraca PS jest obiektem… a nie ciągiem znaków. wynika z tego tyle, że kiedy się coś skryptuje, rzadko kiedy da sie go realnie użyć – a to z tego powodu, że trzeba wszystkie interesujące nas atrybuty obiektów przeformatować na stringi i porównywać jeden po drugim – bo zwykły pipe po prostu wrzuca obiekt i tyle. mówiąc dosadnie: pupa.
  • pozostaje ‘stary, dobry’ findstr, który w każdym Windows jest [no ok, są tacy co wycinają pinga z systemu twierdząc, że nie potrzebny i zmniejsza footprint, więc są pewnie i tacy, co nie mają findstr (; ]. “przepajpowanie” [LOL q: jak to po polskiemu? “przekazanie danych na standardowe wyjście”…] wyników na findstr automatycznie przekonwertuje cały output na stringi [huehue… “całe informacje wyjściowe na wartość tekstową” – ja bym chyba nie zrozumiał po polsq o co cho] a więc zadziała ładnie i zawsze. problem? jest zewnętrznym programem, przez co ciężej potem coś takimi wynikami zrobić. jednak przy standardowym wykorzystaniu przy pracy z PS jako shellem – na pewno będzie działał zawsze i niezawodnie… w przeciwieństwie do Select-String.

eN.

Spread the love

Comments (1)

  1. gt

    Odpowiedz

    Ja tam lubię Select-String… Żeby go nakarmić stringiem używam .ToString() choć oczywiście można się przyczepiać, że to też nie do końca dobrze. Wystarczy porównać efekt wyświetlany na ekranie przez Get-Date z efektem (Get-Date).ToString() żeby być przy takiej konwersji dość ostrożnym.

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.