poniedziałek, 24 lutego 2014

Alternatywa dla Measure-Command w PS

Measure-Command jest całkiem fajną komendą. Pozwala wyświetlić czas trwania polecenie. Niestety, ma parę wad, m.in. nie ma aliasu, a kiedy chce sprawdzić czas działania komend w pipe to na początku i na końcu polecenie muszę dopisywać nawiasy klamrowe - '{' i '}'. Measure-Command ma wymagający parametr Expression, który jest script blockiem i nie może byc w pipe.

Przykład wywołania measure-command jest kod przedstawiony poniżej:
 Measure-Command {Get-ChildItem –Path "C:\Program Files\*.txt" -Recurse}

A dla pipów mam własną funkcję:
function  Measure-Time
{
    param([switch] $PassThru)
    begin{
        $sw = [Diagnostics.Stopwatch]::StartNew()
    }
    process {
        if($PassThru)
        {
            $_
        }
    }
    end{
        $sw.Stop()
        return $sw.Elapsed
    }
}

Wywołanie jest następujące:
 Get-ChildItem –Path "C:\Program Files\*.txt" -Recurse | Measure-Time -PassThru

I oczywiście alias:
New-Alias -Name measureT -Value Measure-Time
Ok, wiem, że pipy są wolne, ale zaletą PS nie jest szybkość działania, ale szybkość implementacji prostych rzeczy.

Brak komentarzy:

Prześlij komentarz