taka mała piątkowa gimnastyka.

krótki kod, powalający sprawdzić czy host żyje i zapisać wyniki do pliq.

Get-Content .hostyerr.txt | %{ $out=`ping $(($_).trim()) -n 1` ; if( ($out[5]).contains("0% loss")) {echo $_}} >hostsok

nie jest to rozwiązanie idealne, ale co fajnego:

  • dla zmiennej można przypisać wynik działania programu – używa sie tych ciapek w lewym-górnym rogu [jak się nazywają?]
  • znów wszystko można zrobić w jednej linijce.

zamiast ‘contains’ lepiej używać –match ale to kiedyś indziej bo…

czas na weekend.

eN.

Spread the love

Comments (6)

  1. GT

    Odpowiedz

    A ja się przyczepię ;)
    Bo twój skrypt nie jest odporny na wersje językowe… Najlepsze, co na wersje znalazłem, to szukanie “TTL” w zwracanej odpowiedzi.
    Ciapek nazywa się backtick albo backquote. A po polsku gravis.

  2. mwd

    Odpowiedz

    contains…, match…, :facepalm: — a ERRORLEVEL to co, psu na budę dali? :)

    W XP też można:

    for /f %i in (hostserr.txt); do ping -n 1 %i >nul && if NOT ERRORLEVEL 1 echo %DATE% %TIME% %i >> hostsok.txt

  3. Odpowiedz

    dobre pomysły. z error level chyba byłoby lepiej. w PS to jest zmienna $?
    czyli:
    Get-Content .hostyerr.txt | %{ ping $(($_).trim()) -n 1; if($?) {add-content $_ -path c:temphostsok}}
    (: wygląda milej.

    @mwd: nie bluźnij tu już tym cmd (;

  4. ziembor

    Odpowiedz

    inna sprawa, że wmi pinh nie wymaga takiej gimnastyki z odpalaniem zewn. procesu

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.