Get-Counter
Aggiornamento: aprile 2010
Si applica a: Windows PowerShell 2.0
Ottiene dati del contatore delle prestazioni da computer locali e remoti.
Sintassi
Get-Counter [-Counter] <string[]> [-ComputerName <string[]>] [-Continuous] [-MaxSamples <Int64>] [-SampleInterval <int>] [<CommonParameters>]
Get-Counter -ListSet <string[]> [-ComputerName <string[]>] [<CommonParameters>]
Descrizione
Il cmdlet Get-Counter ottiene in diretta i dati del contatore delle prestazioni in tempo reale direttamente dalla strumentazione del monitoraggio delle prestazioni in Windows. È possibile utilizzarlo per ottenere dati relativi alle prestazioni dai computer locali o remoti nell'intervallo dell'esempio specificato.
Senza parametri, un comando "Get-Counter" ottiene dati per un set di contatori del sistema.
È possibile utilizzare i parametri di Get-Counter per specificare uno o più computer, elencare i set di contatori delle prestazioni e i contatori in essi contenuti e impostare l'intervallo e le dimensioni dell'esempio.
Parametri
-ComputerName <string[]>
Ottiene dati computer specificati. Digitare il nome NetBIOS, un indirizzo IP (Internet Protocol) o i nomi di dominio completi dei computer. Il valore predefinito è il computer locale.
Nota: Get-Counter non si basa sulla comunicazione remota di Windows PowerShell. È possibile utilizzare il parametro ComputerName di Get-Counter anche se il computer non è configurato per la comunicazione remota in Windows PowerShell.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Continuous
Ottiene continuamente esempi finché non si preme CTRL+C. Per impostazione predefinita, Get-Counter ottiene un solo esempio di contatore. È possibile utilizzare il parametro SampleInterval per impostare l'intervallo per il campionamento continuo.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Counter <string[]>
Ottiene dati dai contatori di prestazioni specificati. Immettere uno o più percorsi di contatori. I caratteri jolly sono consentiti solo nel valore Instance. È inoltre possibile reindirizzare stringhe di percorsi di contatori a Get-Counter.
Il percorso di ciascun contatore dispone del formato seguente:
"[\\<ComputerName>]\<CounterSet>(<Instance>)\<CounterName>"
Ad esempio:
"\\Server01\Processore(2)\% Tempo utente".
L'elemento <ComputerName> è facoltativo. Se lo si omette, Get-Counter utilizza il valore del parametro ComputerName.
Nota: per ottenere percorsi di contatori formattati correttamente, utilizzare il parametro ListSet per ottenere un set di contatori delle prestazioni. Le proprietà Paths e PathsWithInstances di ciascun set di contatori di prestazioni contengono i singoli percorsi dei contatori formattati come stringa. È possibile salvare le stringhe dei percorsi dei contatori in una variabile, oppure reindirizzare la stringa direttamente a un altro comando Get-Counter. Per una dimostrazione, vedere gli esempi.
Obbligatorio? |
true |
Posizione? |
2 |
Valore predefinito |
|
Accettare input da pipeline? |
true (ByValue) |
Accettare caratteri jolly? |
true |
-ListSet <string[]>
Ottiene i set di contatori delle prestazioni specificati nei computer. Immettere i nomi dei set di contatori. È consentito l'utilizzo di caratteri jolly. È inoltre possibile reindirizzare nomi di set di contatori a Get-Counter.
Obbligatorio? |
true |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
true (ByValue, ByPropertyName) |
Accettare caratteri jolly? |
true |
-MaxSamples <Int64>
Specifica il numero di esempi da ottenere da ciascun contatore. Il valore predefinito è 1 esempio. Per ottenere continuamente esempi (dimensione massima di esempio non impostata), utilizzare il parametro Continuous.
Per raccogliere un set di dati di grandi dimensioni, eseguire un comando Get-Counter come processo in background di Windows PowerShell. Per ulteriori informazioni, vedere about_Jobs e Start-Job.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-SampleInterval <int>
Specifica il tempo in secondi tra gli esempi. Il valore minimo e il valore predefinito sono 1 secondo.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
1 |
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
<CommonParameters>
Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.
Input e output
Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.
Input |
System.String[] È possibile reindirizzare nomi di set di contatori (ListSet) e percorsi di contatori a Get-Counter. |
Output |
Microsoft.PowerShell.Commands.GetCounter.CounterSet, Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet, Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample Il parametro ListSet ottiene oggetti Microsoft.PowerShell.Commands.GetCounter.CounterSet. Il parametro Counter ottiene oggetti Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet. Ogni valore di contatore è un oggetto Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample. |
Note
I contatori delle prestazioni sono spesso protetti da elenchi di controllo di accesso (ACL). Per ottenere tutti i contatori delle prestazioni disponibili, aprire Windows PowerShell con l'opzione "Esegui come amministratore".
Per impostazione predefinita, Get-Counter ottiene un esempio durante un intervallo di esempio di un secondo. Per modificare questo comportamento, utilizzare i parametri MaxSamples e Continuous.
I valori MaxSamples e SampleInterval impostati si applicano a tutti i contatori in tutti i computer nel comando. Per impostare valori diversi per contatori diversi, immettere comandi Get-Counter separati per ciascun contatore.
Esempio 1
C:\PS># Get-Counter
Descrizione
-----------
Questo comando ottiene tutti i set di contatori nel computer locale.
C:\PS> get-counter -ListSet *
Poiché molti set di contatori sono protetti da elenchi di controllo di accesso (ACL), per visualizzare tutti i set di contatori, aprire Windows PowerShell con l'opzione "Esegui come amministratore" prima di utilizzare il comando Get-Counter.
Esempio 2
C:\PS># Get-Counter
Descrizione
-----------
Questo comando ottiene i valori combinati "% Processor Time" correnti per tutti i processori nel computer locale. Raccoglie dati ogni due secondi finché non dispone di tre valori.
C:\PS> get-counter -Counter "\Processore(_Total)\% Tempo processore" -SampleInterval 2 -MaxSamples 3
Esempio 3
C:\PS># Get-Counter
Descrizione
-----------
Questo comando ottiene un elenco ordinato alfabeticamente dei nomi di tutti i set di contatori nel computer locale.
C:\PS> get-counter -listset * | sort-object countersetname | format-table countersetname
Esempio 4
C:\PS># Get-Counter
Descrizione
-----------
Questi comandi utilizzano la proprietà Path di un set di contatori per trovare i nomi dei percorsi correttamente formattati per i contatori delle prestazioni. È possibile utilizzare un comando come questo per ottenere i nomi corretti dei percorsi dei contatori.
Il primo comando ottiene i nomi dei percorsi dei contatori delle prestazioni nel contatore Memoria impostato nel computer locale.
C:\PS> (get-counter -listset Memoria).paths
\Memoria\Page Faults/sec
\Memoria\Available Bytes
\Memoria\Committed Bytes
\Memoria\Commit Limit
\Memoria\Write Copies/sec
\Memoria\Transition Faults/sec
\Memoria\Cache Faults/sec
\Memoria\Demand Zero Faults/sec
\Memoria\Pages/sec
\Memoria\Pages Input/sec
...
Il secondo comando ottiene i nomi dei percorsi che includono "cache".
C:\PS> (get-counter -listset Memoria).paths | where {$_ -like "*cache*"}
\Memoria\Cache Faults/sec
\Memoria\Cache Bytes
\Memoria\Cache Bytes Peak
\Memoria\System Cache Resident Bytes
\Memoria\Standby Cache Reserve Bytes
\Memoria\Standby Cache Normal Priority Bytes
\Memoria\Standby Cache Core Bytes
Esempio 5
C:\PS># Get-Counter
Descrizione
-----------
Questi comandi ottengono i dati del contatore Disk Reads/sec dai computer Server01 e Server02.
Il primo comando salva un percorso del contatore Disk Reads/sec nella variabile $diskreads.
C:\PS> $diskreads = "\Disco logico(C:)\Letture disco/sec"
Il secondo comando utilizza un operatore pipeline (|) per inviare il percorso del contatore nella variabile $diskreads al cmdlet Get-Counter. Il comando utilizza il parametro MaxSample per limitare l'output a 10 esempi.
C:\PS> $diskreads | get-counter -computer Server01, Server02 -maxsamples 10
Esempio 6
C:\PS># Get-Counter
Descrizione
-----------
Questo comando ottiene i nomi dei percorsi formattati correttamente per i contatori delle prestazioni Disco fisico, inclusi i nomi delle istanze.
C:\PS> (get-counter -list Disco fisico).pathswithinstances
Esempio 7
C:\PS># Get-Counter
Descrizione
-----------
Questi comandi ottengono il valore del contatore delle prestazioni "% DPC Time" in 50 computer selezionati casualmente nell'organizzazione.
Il primo comando utilizza il cmdlet Get-Content per ottenere l'elenco dei server dell'organizzazione dal file Servers.txt. Utilizza il cmdlet Get-Random per selezionare in modo casuale 50 nomi di server dal contenuto del file Servers.txt. I risultati vengono salvati nella variabile $servers.
C:\PS> $servers = get-random (get-content servers.txt) -count 50
Il secondo comando salva il percorso del contatore nel cmdlet "% DPC Time" nella variabile $Counter. Il percorso del contatore include un carattere jolly nel nome dell'istanza per ottenere i dati in tutti i processori in ciascun computer.
C:\PS> $counter = "\Processore(*)\% Tempo DPC"
Il terzo comando utilizza il cmdlet Get-Counter per ottenere i valori del contatore. Utilizza il parametro Counter per specificare i contatori e il parametro ComputerName per specificare i computer salvati nella variabile $servers.
C:\PS> get-counter -Counter $counter -computername $servers
Esempio 8
C:\PS># Get-Counter
Descrizione
-----------
Questi comandi ottengono un singolo valore per tutti i contatori delle prestazioni nel contatore della memoria impostato nel computer locale.
Il primo comando ottiene i percorsi dei contatori e li salva nella variabile $memCounters.
C:\PS> $memCounters = (get-counter -list Memoria).paths
Il secondo comando utilizza il cmdlet Get-Counter per ottenere i dati dei contatori per ciascun contatore. Utilizza il parametro Counter per specificare i contatori in $memCounters.
C:\PS> get-counter -counter $memCounters
Esempio 9
C:\PS># Get-Counter
Descrizione
-----------
In questo esempio vengono illustrati i valori delle proprietà nell'oggetto PerformanceCounterSample che rappresenta ciascun esempio di dati.
Il primo comando salva un percorso del contatore nella variabile $counter.
C:\PS> $counter = "\\SERVER01\Processo(Idle)\% Tempo processore"
Il secondo comando utilizza il cmdlet Get-Counter per ottenere un esempio dei valori dei contatori. I risultati vengono salvati nella variabile $data.
C:\PS> $data = get-counter $counter
Il terzo comando utilizza il cmdlet Format-List per visualizzare tutte le proprietà della proprietà CounterSamples dell'oggetto set di esempi come elenco.
C:\PS> $data.countersamples | format-list -property *
Path : \\SERVER01\Processo(Idle)\% Tempo processore
InstanceName : idle
CookedValue : 198.467899571389
RawValue : 14329160321003
SecondValue : 128606459528326201
MultipleCount : 1
CounterType : Timer100Ns
Timestamp : 7/15/2008 6:39:12 PM
Timestamp100NSec : 128606207528320000
Status : 0
DefaultScale : 0
TimeBase : 10000000
È possibile utilizzare le proprietà dell'oggetto CounterSamples per esaminare, selezionare, ordinare e raggruppare i dati.
Esempio 10
C:\PS># Get-Counter
Descrizione
-----------
Il comando esegue un comando Get-Counter come processo in background. Per ulteriori informazioni, vedere Start-Job.
C:\PS> $counters = "\Disco logico(_Total)\% Spazio disponibile"
C:\PS> start-job -scriptblock {get-counter -counter $counters -maxsamples 1000)
Esempio 11
C:\PS># Get-Counter
Descrizione
-----------
Questo comando utilizza i cmdlet Get-Counter e Get-Random per trovare la percentuale di spazio libero su disco nei 50 computer selezionati casualmente dal file Servers.txt.
C:\PS> get-counter -computername (get-random servers.txt -count 50) -counter "\Disco logico(*)\% Spazio"
Esempio 12
C:\PS># Get-Counter
Descrizione
-----------
In questo esempio viene illustrato come associare dati del contatore al computer in cui hanno avuto origine e come modificare i dati.
Il primo comando utilizza il cmdlet Get-Counter per ottenere il valore del contatore "Disco logico\% Spazio" da due computer remoti, S1 e S2. Il risultato viene salvato nella variabile $a.
$a = get-counter "\Disco logico(_Total)\% Spazio disponibile" -comp s1, s2
Nel secondo comando vengono visualizzati i risultati nella variabile $a. Tutti i dati vengono archiviati nell'oggetto, ma non è facile visualizzarli in questo formato.
C:\PS> $a
Counter Paths: \\s1\\Disco logico(c:)\% Spazio disponibile, \\s1\\Disco logico(d:)\% Spazio disponibile, \\s1\\Disco logico(_Total)\% Spazio disponibile, \\s2\\Disco logico(c:)\% Spazio disponibile, \\s2\\Disco logico(_Total)\% Spazio disponibile
Timestamp : 7/15/2008 5:09:08 PM
Cooked Values : "0.327058823529412", "17.8952248493278", "12.9994033060778", "75.0754805595626", "75.0754805595626"
Il terzo comando visualizza in una tabella il valore della proprietà CounterSamples dell'oggetto PerformanceCounterSampleSet restituito da Get-Counter. (Per visualizzare tutte le proprietà e i metodi dell'oggetto, reindirizzarlo al cmdlet Get-Member).
C:\PS> $a.countersamples | format-table -auto
Path InstanceName CookedValue
---- ------------ -----------
\\s1\\Disco logico(c:)\% Spazio disponibile c: 0.327058823529412
\\s1\\Disco logico(d:)\% Spazio disponibile d: 17.8952248493278
\\s1\\Disco logico(_Total)\% Spazio disponibile _total 12.9994033060778
\\s2\\Disco logico(c:)\% Spazio disponibile c: 75.0754805595626
\\s2\\Disco logico(_Total)\% Spazio disponibile _total 75.0754805595626
La proprietà CounterSamples contiene un oggetto PerformanceCounterSample con i relativi metodi e proprietà. Il quarto comando utilizza la notazione di matrice per ottenere il primo esempio di contatore e un operatore pipeline per inviare l'oggetto esempio di contatore al cmdlet Format-List che visualizza tutte le proprietà e i metodi in un elenco. In questa visualizzazione viene mostrata la ricchezza di dati in ciascun oggetto esempio di contatore.
Il quarto comando illustra come selezionare dati dagli esempi di contatore. Utilizza il cmdlet Where-Object per ottenere solo gli esempi di contatore con il valore di CookedValue minore di 15.
C:\PS> $a.countersamples | where {$_.cookedvalue -lt 15}
Path InstanceName CookedValue
---- ------------ -----------
\\s1\\Disco logico(c:)\% Spazio disponibile c: 0.327058823529412
\\s1\\Disco logico(_Total)\% Spazio disponibile _total 12.9994033060778
Esempio 13
C:\PS># Get-Counter
Descrizione
-----------
In questo esempio viene illustrato come ordinare i dati del contatore delle prestazioni recuperati. Nell'esempio vengono trovati i processi nel computer che utilizzano la maggior parte del tempo del processore durante il campionamento.
Il primo comando ottiene il contatore "Processo\% Tempo processore" per tutti i processi nel computer. I risultati vengono salvati nella variabile $p.
C:\PS> $p = get-counter '\Processo(*)\% Tempo processore'
Il secondo comando ottiene la proprietà CounterSamples dell'oggetto esempio impostato in $p e ordina gli esempi in ordine decrescente in base al valore cooked dell'esempio. Il comando utilizza il cmdlet Format-Table e il parametro AutoFormat per sistemare le colonne nella tabella.
C:\PS> $p.CounterSamples | sort-object -property CookedValue -Descending | format-table -auto
Path InstanceName CookedValue
---- ------------ -----------
\\server01\Processo(_total)\% Tempo processore _total 200.00641042078
\\server01\Processo(Idle)\% Tempo processore idle 200.00641042078
\\server01\Processo(explorer#1)\% Tempo processore explorer 0
\\server01\Processo(dwm#1)\% Tempo processore dwm 0
\\server01\Processo(taskeng#1)\% Tempo processore taskeng 0
\\server01\Processo(taskhost#1)\% Tempo processore taskhost 0
\\server01\Processo(winlogon)\% Tempo processore winlogon 0
\\server01\Processo(csrss)\% Tempo processore csrss 0
Esempio 14
C:\PS># Get-Counter
Descrizione
-----------
Questi comandi trovano i processi nel computer con i working set di dimensioni maggiori. Elencano i processi in ordine decrescente in base alla dimensione del relativo working set.
Il primo comando ottiene un esempio del contatore "Processo\Working set - Privato" per ciascun processo. Il comando salva i dati del contatore nella variabile $ws.
C:\PS> $ws = get-counter "\Processo(*)\Working set - Privato"
Il secondo comando utilizza un operatore pipeline (|) per inviare i dati nella proprietà CounterSamples della variabile $ws al cmdlet Sort-Object in cui i dati del processo vengono ordinati in ordine decrescente in base al valore della proprietà CookedValue. Un'altra pipeline invia i dati ordinati al cmdlet Format-Table in cui i dati vengono formattati come tabella con le colonne InstanceName e CookedValue.
C:\PS> $ws.countersamples | sort-object -property cookedvalue -descending | format-table -property InstanceName, CookedValue -auto
InstanceName CookedValue
------------ -----------
_total 162983936
svchost 40370176
powershell 15110144
explorer 14135296
svchost 10928128
svchost 9027584
...
Esempio 15
C:\PS># Get-Counter
Descrizione
-----------
Questo comando ottiene una serie di esempi del contatore Processore\% Tempo processore all'intervallo di un secondo predefinito. Per interrompere il comando, premere CTRL+C.
C:\PS> get-counter -counter "\Processore(_Total)\% processor time" -continuous