Mittaa komentojen ja komentosarjojen suoritusaikaa PowerShellissä

Viimeisin päivitys: 14/08/2025
Kirjoittaja: Isaac
  • Measure-Command-komennon avulla voit mitata skriptien ja komentojen tarkan keston
  • Get-Process ja Get-Date voivat laskea aika prosessin aktiivinen osa
  • On mahdollista poimia tietoja, kuten suorittimen, RAMin ja prosessin käynnistäneen käyttäjän tiedot.
  • Etäprosesseja voidaan valvoa ja tulosten lähettäminen automatisoida.

PowerShell-ajonaikainen

Komennon suoritusajan mittaaminen PowerShellissä saattaa vaikuttaa tekniseltä tehtävältä, joka on varattu järjestelmänvalvojille tai kehittäjille, mutta totuus on, että vain muutamalla koodirivillä voit saada erittäin hyödyllistä tietoa skriptiesi ja prosessiesi suorituskyvystä. PowerShell tarjoaa useita työkaluja tämän tehtävän helpottamiseksi ja automatisoitujen prosessien optimoimiseksi.

käyttö Measure-Command, natiivi PowerShell-työkalu

PowerShellissä on oletusarvo Measure-Command, joka on erityisesti suunniteltu mittaamaan, kuinka kauan se kestää ilmaus tai käsikirjoitus suoritettavaksi. Sinun tarvitsee vain kapseloida koodi aaltosulkeiden sisään {}.

Perusesimerkki:

Measure-Command { Get-Process }

Tämä komento palauttaa TimeSpan-objektin , joka sisältää tietoja, kuten päivät , tunnit , minuutit , sekunnit , millisekunnit ja tikit.

Sitä voidaan käyttää myös tiedostoihin tallennettujen skriptien kanssa:

Measure-Command { C:\Scripts\MiScript.ps1 }

Se on erityisen hyödyllinen eri skriptien tai suoritusten välisten aikojen vertailuun .

Hanki aika prosessin alusta

Toinen tehokas vaihtoehto on käyttää Get-Process- funktiota prosessin aloitusajan (StartTime ) selvittämiseen ja eron laskemiseen nykyiseen aikaan nähden, kuten tässä:

(Get-Date).Subtract((Get-Process nombreProceso).StartTime)

Tämän menetelmän avulla voit määrittää, kuinka kauan prosessi on ollut aktiivinen, esimerkiksi:

(Get-Date).Subtract((Get-Process CalculatorApp).StartTime)

Jos haluat näyttää vain sen, kuinka monta minuuttia se on ollut käynnissä, voit käyttää seuraavaa:

$Fecha1 = (Get-Process CalculatorApp).StartTime
$Fecha2 = Get-Date
($Fecha2 - $Fecha1).TotalMinutes

Poimi lisää prosessitietoja: käyttäjä, RAM, CPU

PowerShellin avulla voit myös rikastuttaa prosessitietoja hankkimalla tietoja, kuten prosessin suorittaneen käyttäjän , RAM- ja CPU- käytön sekä koneen nimen . Lisätietoja komentojen suoritusajan mittaamisesta PowerShellissä on tässä .NET:n ajonaikaisen optimoinnin arvostelussa.

$proceso = Get-Process CalculatorApp
$tiempo = (Get-Date).Subtract($proceso.StartTime)
$usuario = (Get-WmiObject Win32_Process | Where-Object { $_.ProcessName -match "CalculatorApp" }).GetOwner().User
$cpu = $proceso.CPU
$ram = $proceso.WorkingSet64 / 1MB
$equipo = ::GetHostName()

Näiden tietojen avulla voit rakentaa valvontaskriptejä tarkemmin ja lähettää niitä sähköpostitse tai integroida ne ajoitettuihin tehtäviin.

  Opastus oman FTP-palvelimen asentamiseen Windowsissa

Tapahtuma-analyysi: milloin sovellus alkoi tai päättyi

Jos sovellus on jo päättynyt, voit silti tarkastella Tapahtumienvalvonnan lokeja, joiden tunnukset ovat 4688 (prosessin aloitus) ja 4689 (prosessin loppu), edellyttäen, että valvonta on käytössä ryhmäkäytännössäsi. Jos haluat oppia automatisoimaan nämä tehtävät, voit tutustua myös tähän Microsoft Flow'ta käsittelevään artikkeliin.

Mittaa suoritusaikaa etätietokoneilla

Yritysympäristöissä on hyödyllistä mitata sovellusten toimintaa muilla koneilla etänä, esimerkiksi:

(Get-Date) - (Get-CimInstance Win32_OperatingSystem -ComputerName Nombre_PC).LastBootUpTime

Tämä komento ilmaisee, kuinka kauan etäkone on ollut aktiivinen, ja se voidaan yhdistää Get-Processin tai WMI:n kanssa , jotta saadaan tarkempia tietoja siitä, miten PowerShellissä komennon suorittamiseen kuluva aika mitataan.

Vertaile komentojen suorituskykyä

PowerShell helpottaa eri metodien vertailua mittaamalla kunkin suoritusajan, jolloin voit optimoida skriptejäsi. Esimerkiksi:

Measure-Command { Get-ChildItem -Path C:\Windows\*.txt -Recurse }
Measure-Command { Get-ChildItem C:\Windows -Filter "*.txt" -Recurse }

Näin voit määrittää, mikä vaihtoehto on tehokkain juuri sinun tehtävääsi varten.

Yleisten mittausvirheiden välttäminen

Kun tallennat tuloksia tiedostoihin, kuten .txt -tiedostoihin , sinun on varmistettava, että nämä tiedostot jätetään pois analyysistä, jotta vältytään loputtomilta silmukoilta. Esimerkiksi:

gc *.txt -exclude resultado.txt > resultado.txt

Muuten skripti voisi jatkaa oman tulosteensa sisällyttämistä, mikä aiheuttaisi eksponentiaalista datan kasvua.

Mittaa aikaa klassisesta komentoriviltä (CMD)

Vaikka tämä lähestymistapa kuuluu CMD :hen , aikoja voidaan mitata myös .bat -skripteillä : jos haluat perehtyä tarkemmin siihen, miten suoritusaikaa voidaan mitata eri ympäristöissä, katso tämä aiheeseen liittyvä artikkeli.

Tämä menetelmä laskee komennon suorituksen aloitus- ja lopetusajan välisen eron ja näyttää tuloksen muodossa HH:MM:SS.MS.

Ohjaa tulokset lokeihin tai sähköpostiin

Täydellistä valvontaa varten luo skriptejä, jotka mittaavat prosesseja säännöllisesti ja lähettävät sähköposti-ilmoituksia TLS:n avulla. Tästä voi olla hyötyä tässä tarkoituksessa.

  Opas halpojen, turvallisten ja aitojen Windows 11 -lisenssien ostamiseen

Tämä tekniikka on erityisen hyödyllinen Windows -palvelimille , jotka vaativat jatkuvaa järjestelmän tilan valvontaa ja sitä, miten mitataan komennon suorittamiseen kuluva aika PowerShellissä.

Measure-Command- , Get-Process- , WMI- ja date-laskelmien yhdistelmä mahdollistaa kaiken luomisen yksinkertaisista analyyseistä edistyneisiin raportteihin resurssien käytön optimoimiseksi ja suorituskyvyn hallinnan parantamiseksi.

Aiheeseen liittyvä artikkeli:
KORJAUS: High CPU .NET Runtime Optimization Service