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\Processor(2)\% User Time".

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 "\Processor(_Total)\% Processor Time" -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 Memory impostato nel computer locale.  

C:\PS> (get-counter -listset memory).paths

\Memory\Page Faults/sec
\Memory\Available Bytes
\Memory\Committed Bytes
\Memory\Commit Limit
\Memory\Write Copies/sec
\Memory\Transition Faults/sec
\Memory\Cache Faults/sec
\Memory\Demand Zero Faults/sec
\Memory\Pages/sec
\Memory\Pages Input/sec
...

Il secondo comando ottiene i nomi dei percorsi che includono "cache".

C:\PS> (get-counter -listset memory).paths | where {$_ -like "*cache*"}

\Memory\Cache Faults/sec
\Memory\Cache Bytes
\Memory\Cache Bytes Peak
\Memory\System Cache Resident Bytes
\Memory\Standby Cache Reserve Bytes
\Memory\Standby Cache Normal Priority Bytes
\Memory\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 = "\LogicalDisk(C:)\Disk Reads/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 PhysicalDisk, inclusi i nomi delle istanze. 

C:\PS> (get-counter -list physicaldisk).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 = "\Processor(*)\% DPC Time"

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 memory).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\Process(Idle)\% Processor Time" 

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\process(idle)\% processor time
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 = "\LogicalDisk(_Total)\% Free Space"

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 "\LogicalDisk(*)\% Free Space"






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 "LogicalDisk \% Free Space" da due computer remoti, S1 e S2. Il risultato viene salvato nella variabile $a.

$a = get-counter "\LogicalDisk(_Total)\% Free Space" -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\\logicaldisk(c:)\% free space, \\s1\\logicaldisk(d:)\% free space, \\s1\\logicaldisk(_total)\% free space, \\s2\\logicaldisk(c:)\% free space, \\s2\\logicaldisk(_total)\% free space

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\\logicaldisk(c:)\% free space       c:           0.327058823529412
\\s1\\logicaldisk(d:)\% free space       d:            17.8952248493278
\\s1\\logicaldisk(_total)\% free space   _total        12.9994033060778
\\s2\\logicaldisk(c:)\% free space       c:            75.0754805595626
\\s2\\logicaldisk(_total)\% free space   _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\\logicaldisk(c:)\% free space       c:           0.327058823529412
\\s1\\logicaldisk(_total)\% free space   _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 "Process\% Processor Time" per tutti i processi nel computer. I risultati vengono salvati nella variabile $p.

C:\PS> $p = get-counter '\Process(*)\% Processor Time' 


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\process(_total)\% processor time        _total        200.00641042078
\\server01\process(idle)\% processor time          idle          200.00641042078
\\server01\process(explorer#1)\% processor time    explorer                    0
\\server01\process(dwm#1)\% processor time         dwm                         0
\\server01\process(taskeng#1)\% processor time     taskeng                     0
\\server01\process(taskhost#1)\% processor time    taskhost                    0
\\server01\process(winlogon)\% processor time      winlogon                    0
\\server01\process(csrss)\% processor time         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 "Process\Working Set - Private" per ciascun processo. Il comando salva i dati del contatore nella variabile $ws.

C:\PS> $ws = get-counter "\Process(*)\Working Set - Private"

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 Processor\%Processor Time all'intervallo di un secondo predefinito. Per interrompere il comando, premere CTRL+C.

C:\PS> get-counter -counter "\processor(_total)\% processor time" -continuous






Vedere anche




Argomenti della Guida