Get-Counter
Ottiene i dati del contatore delle prestazioni dai computer locali e remoti.
Sintassi
Get-Counter
[[-Counter] <String[]>]
[-SampleInterval <Int32>]
[-MaxSamples <Int64>]
[-Continuous]
[-ComputerName <String[]>]
[<CommonParameters>]
Get-Counter
[-ListSet] <String[]>
[-ComputerName <String[]>]
[<CommonParameters>]
Descrizione
Questo cmdlet è disponibile solo nella piattaforma Windows.
Il cmdlet Get-Counter
ottiene i dati dei contatori delle prestazioni direttamente dalla strumentazione del monitoraggio delle prestazioni nella famiglia di sistemi operativi Windows.
Get-Counter
ottiene i dati sulle prestazioni da un computer locale o da computer remoti.
È possibile usare i parametri Get-Counter
per specificare uno o più computer, elencare i set di contatori delle prestazioni e le istanze che contengono, impostare gli intervalli di campionamento e specificare il numero massimo di campioni. Senza parametri, Get-Counter
ottiene i dati del contatore delle prestazioni per un set di contatori di sistema.
Molti insiemi di contatori sono protetti da elenchi di controllo di accesso (ACL). Per visualizzare tutti i set di contatori, aprire PowerShell con l'opzione esegui come amministratore .
Questo cmdlet è stato reintrodotto in PowerShell 7.
Nota
I nomi dei contatori di performance vengono localizzati. Gli esempi illustrati di seguito usano i nomi in inglese degli oggetti prestazioni, dei contatori e delle istanze. I nomi saranno diversi in un sistema che usa un'altra lingua. Usare il comando Get-Counter -ListSet
per visualizzare i nomi localizzati.
Esempio
Esempio 1: Ottenere l'elenco dei contatori
In questo esempio viene visualizzato l'elenco di insiemi di contatori del computer locale.
Get-Counter -ListSet *
CounterSetName : Processor
MachineName : .
CounterSetType : MultiInstance
Description : The Processor performance object consists of counters that measure aspects ...
computer that performs arithmetic and logical computations, initiates ...
computer can have multiple processors. The processor object represents ...
Paths : {\Processor(*)\% Processor Time, \Processor(*)\% User Time, ...
PathsWithInstances : {\Processor(0)\% Processor Time, \Processor(1)\% Processor Time, ...
Counter : {\Processor(*)\% Processor Time, \Processor(*)\% User Time, ...
Get-Counter
usa il parametro ListSet con un asterisco (*
) per ottenere l'elenco dei set di contatori.
Il punto (.
) nella colonna machineName rappresenta il computer locale.
Esempio 2: Specificare il SampleInterval e il MaxSamples
In questo esempio vengono visualizzati i dati del contatore per tutti i processori nel computer locale. I dati vengono raccolti a intervalli di due secondi fino a quando non sono presenti tre campioni.
Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3
Timestamp CounterSamples
--------- --------------
6/18/2019 14:39:56 \\Computer01\processor(_total)\% processor time :
20.7144271584086
6/18/2019 14:39:58 \\Computer01\processor(_total)\% processor time :
10.4391790575511
6/18/2019 14:40:01 \\Computer01\processor(_total)\% processor time :
37.5968799396998
Get-Counter
usa il parametro Counter per specificare il percorso \Processor(_Total)\% Processor Time
del contatore. Il parametro SampleInterval imposta un intervallo di due secondi per controllare il contatore.
MaxSamples determina che tre sono il numero massimo di volte per controllare il contatore.
Esempio 3: Ottenere campioni continui di un contatore
Questo esempio raccoglie campioni continui per un contatore ogni secondo. Per arrestare il comando, premere CTRL+C. Per specificare un intervallo più lungo tra esempi, usare il parametro SampleInterval.
Get-Counter -Counter "\Processor(_Total)\% Processor Time" -Continuous
Timestamp CounterSamples
--------- --------------
6/19/2019 15:35:03 \\Computer01\processor(_total)\% processor time :
43.8522842937022
6/19/2019 15:35:04 \\Computer01\processor(_total)\% processor time :
29.7896844697383
6/19/2019 15:35:05 \\Computer01\processor(_total)\% processor time :
29.4962645638135
6/19/2019 15:35:06 \\Computer01\processor(_total)\% processor time :
25.5901500127408
Get-Counter
usa il parametro counter per specificare il contatore \Processor\% Processor Time
.
Il parametro continuo specifica di ottenere campioni ogni secondo finché il comando non viene arrestato con CTRL+C.
Esempio 4: Elenco alfabetico di insiemi di contatori
In questo esempio viene usata la pipeline per ottenere il set di elenchi di contatori e quindi ordinare l'elenco in ordine alfabetico.
Get-Counter -ListSet * |
Sort-Object -Property CounterSetName |
Format-Table CounterSetName, CounterSetType -AutoSize
CounterSetName CounterSetType
-------------- --------------
.NET CLR Data SingleInstance
.NET Data Provider for SqlServer SingleInstance
AppV Client Streamed Data Percentage SingleInstance
Authorization Manager Applications SingleInstance
BitLocker MultiInstance
Bluetooth Device SingleInstance
Cache SingleInstance
Client Side Caching SingleInstance
Get-Counter
usa il parametro ListSet con un asterisco (*
) per ottenere un elenco completo di set di contatori. Gli oggetti CounterSet vengono inviati nella pipeline.
Sort-Object
utilizza il parametro Property per specificare che gli oggetti vengono ordinati in base CounterSetName. Gli oggetti vengono inviati alla pipeline a Format-Table
. Il parametro AutoSize regola le larghezze delle colonne per ridurre al minimo il troncamento.
Il punto (.
) nella colonna machineName rappresenta il computer locale.
Esempio 5: Eseguire un processo in background per ottenere i dati dei contatori
In questo esempio, Start-Job
esegue un comando Get-Counter
come processo in background nel computer locale.
Visualizza l'output del contatore delle prestazioni dall'attività, usando il cmdlet Receive-Job
.
Start-Job -ScriptBlock {
Get-Counter -Counter "\LogicalDisk(_Total)\% Free Space" -MaxSamples 1000
}
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost Get-Counter -Counter
Start-Job
usa il parametro ScriptBlock per eseguire un comando Get-Counter
.
Get-Counter
usa il parametro Counter per specificare il percorso \LogicalDisk(_Total)\% Free Space
del contatore. Il parametro MaxSamples consente di ottenere 1000 campioni del contatore.
Esempio 6: Recuperare i dati dei contatori da più computer
In questo esempio viene usata una variabile per ottenere i dati del contatore delle prestazioni da due computer.
$DiskReads = "\LogicalDisk(C:)\Disk Reads/sec"
$DiskReads | Get-Counter -ComputerName Server01, Server02 -MaxSamples 10
Timestamp CounterSamples
--------- --------------
6/21/2019 10:51:04 \\Server01\logicaldisk(C:)\disk reads/sec :
0
\\Server02\logicaldisk(C:)\disk reads/sec :
0.983050344269146
La variabile $DiskReads
archivia il percorso del contatore \LogicalDisk(C:)\Disk Reads/sec
. La variabile $DiskReads
viene inviata alla pipeline fino a Get-Counter
.
Counter è il primo parametro di posizione e accetta il percorso archiviato in $DiskReads
.
ComputerName specifica i due computer e MaxSamples specifica di ottenere 10 campioni da ogni computer.
Esempio 7: Ottenere i valori di istanza di un contatore da più computer casuali
Questo esempio ottiene il valore di un contatore delle prestazioni su 50 computer remoti casuali nell'organizzazione. Il parametro ComputerName usa nomi computer casuali archiviati in una variabile. Per aggiornare i nomi dei computer nella variabile, ricreare la variabile.
Un'alternativa per i nomi dei server nel parametro ComputerName consiste nell'usare un file di testo. Per esempio:
-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)
Il percorso del contatore include un asterisco (*
) nel nome dell'istanza per ottenere i dati per ognuno dei processori del computer remoto.
$Servers = Get-Random (Get-Content -Path C:\Servers.txt) -Count 50
$Counter = "\Processor(*)\% Processor Time"
Get-Counter -Counter $Counter -ComputerName $Servers
Timestamp CounterSamples
--------- --------------
6/20/2019 12:20:35 \\Server01\processor(0)\% processor time :
6.52610319637854
\\Server01\processor(1)\% processor time :
3.41030663625782
\\Server01\processor(2)\% processor time :
9.64189975649925
\\Server01\processor(3)\% processor time :
1.85240835619747
\\Server01\processor(_total)\% processor time :
5.35768447160776
Il cmdlet Get-Random
usa Get-Content
per selezionare 50 nomi di computer casuali dal file Servers.txt
. I nomi dei computer remoti vengono archiviati nella variabile $Servers
. Il percorso del contatore \Processor(*)\% Processor Time
viene archiviato nella variabile $Counter
.
Get-Counter
utilizza il parametro Counter per definire i contatori nella variabile $Counter
. Il parametro ComputerName specifica i nomi dei computer nella variabile $Servers
.
Esempio 8: Usare la proprietà Path per ottenere nomi di percorso formattati
In questo esempio viene utilizzata la proprietà Path di un insieme di contatori per trovare i nomi di percorso formattati per i contatori delle prestazioni.
La pipeline viene usata con il cmdlet Where-Object
per trovare un sottoinsieme dei nomi dei percorsi. Per trovare un elenco completo dei percorsi dei set di contatori, rimuovere la parte della pipeline (|
) e il comando Where-Object
.
Il $_
è una variabile automatica per l'oggetto corrente nella pipeline.
Per altre informazioni, vedere about_Automatic_Variables.
(Get-Counter -ListSet Memory).Paths | Where-Object { $_ -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
\Memory\Long-Term Average Standby Cache Lifetime (s)
Get-Counter
usa il parametro ListSet per specificare il set di contatori memoria. Il comando è racchiuso tra parentesi in modo che la proprietà percorsi restituisca ogni percorso come stringa. Gli oggetti vengono inviati alla pipeline a Where-Object
.
Where-Object
usa la variabile $_
per elaborare ogni oggetto e usa l'operatore -like
per trovare corrispondenze per la stringa *Cache*
. Gli asterischi (*
) sono caratteri jolly per rappresentare qualsiasi carattere.
Esempio 9: Utilizzare la proprietà PathsWithInstances per ottenere nomi di percorso formattati
Questo esempio ottiene i nomi di percorso formattati che includono le istanze per i contatori delle prestazioni PhysicalDisk.
(Get-Counter -ListSet PhysicalDisk).PathsWithInstances
\PhysicalDisk(0 C:)\Current Disk Queue Length
\PhysicalDisk(_Total)\Current Disk Queue Length
\PhysicalDisk(0 C:)\% Disk Time
\PhysicalDisk(_Total)\% Disk Time
\PhysicalDisk(0 C:)\Avg. Disk Queue Length
\PhysicalDisk(_Total)\Avg. Disk Queue Length
\PhysicalDisk(0 C:)\% Disk Read Time
\PhysicalDisk(_Total)\% Disk Read Time
Get-Counter
utilizza il parametro ListSet per specificare il set di contatori di dischi fisici. Il comando è racchiuso tra parentesi in modo che la proprietà PathsWithInstances restituisca ogni istanza del percorso come stringa.
Esempio 10: Ottenere un singolo valore per ogni contatore in un insieme di contatori
In questo esempio viene restituito un singolo valore per ogni contatore delle prestazioni nella serie di contatori memoria del computer locale.
$MemCounters = (Get-Counter -ListSet Memory).Paths
Get-Counter -Counter $MemCounters
Timestamp CounterSamples
--------- --------------
6/19/2019 12:05:00 \\Computer01\memory\page faults/sec :
868.772077545597
\\Computer01\memory\available bytes :
9031176192
\\Computer01\memory\committed bytes :
8242982912
\\Computer01\memory\commit limit :
19603333120
Get-Counter
usa il parametro ListSet per specificare il set di contatori memoria. Il comando è racchiuso tra parentesi in modo che la proprietà percorsi restituisca ogni percorso come stringa. I percorsi vengono archiviati nella variabile $MemCounters
.
Get-Counter
usa il parametro Contatore per specificare i percorsi dei contatori nella variabile $MemCounters
.
Esempio 11: Visualizzare i valori delle proprietà di un oggetto
I valori delle proprietà nell'oggetto PerformanceCounterSample rappresentano ogni esempio di dati. In questo esempio vengono usate le proprietà dell'oggetto CounterSamples per esaminare, selezionare, ordinare e raggruppare i dati.
$Counter = "\\Server01\Process(Idle)\% Processor Time"
$Data = Get-Counter $Counter
$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 : 6/19/2019 12:20:49
Timestamp100NSec : 128606207528320000
Status : 0
DefaultScale : 0
TimeBase : 10000000
Il percorso del contatore viene archiviato nella variabile $Counter
.
Get-Counter
ottiene un campione dei valori del contatore e archivia i risultati nella variabile $Data
. La variabile $Data
usa la proprietà CounterSamples per ottenere le proprietà dell'oggetto. L'oggetto viene inviato alla pipeline a Format-List
. Il parametro Property usa un carattere jolly asterisco (*
) per selezionare tutte le proprietà.
Esempio 12: Valori della matrice dei contatori delle prestazioni
In questo esempio una variabile archivia ogni contatore delle prestazioni. La proprietà CounterSamples è una matrice in grado di visualizzare valori di contatori specifici.
Per visualizzare ogni esempio di contatore, usare $Counter.CounterSamples
.
$Counter = Get-Counter -Counter "\Processor(*)\% Processor Time"
$Counter.CounterSamples[0]
Path InstanceName CookedValue
---- ------------ -----------
\\Computer01\processor(0)\% processor time 0 1.33997091699662
Get-Counter
utilizza il parametro Counter per specificare il contatore \Processor(*)\% Processor Time
. I valori vengono archiviati nella variabile $Counter
.
$Counter.CounterSamples[0]
visualizza il valore della matrice per il primo valore del contatore.
Esempio 13: Confrontare i valori dei contatori delle prestazioni
In questo esempio viene trovata la quantità di tempo del processore usata da ogni processore nel computer locale. La proprietà counterSamples viene utilizzata per confrontare i dati del contatore con un valore specificato.
Per visualizzare ogni esempio di contatore, usare $Counter.CounterSamples
.
$Counter = Get-Counter -Counter "\Processor(*)\% Processor Time"
$Counter.CounterSamples | Where-Object { $_.CookedValue -lt "20" }
Path InstanceName CookedValue
---- ------------ -----------
\\Computer01\processor(0)\% processor time 0 12.6398025240208
\\Computer01\processor(1)\% processor time 1 15.7598095767344
Get-Counter
utilizza il parametro Counter per specificare il contatore \Processor(*)\% Processor Time
. I valori vengono archiviati nella variabile $Counter
. Gli oggetti archiviati in $Counter.CounterSamples
vengono inviati nella pipeline.
Where-Object
usa un blocco di script per confrontare ogni valore di oggetti con un valore specificato di 20
. Il $_.CookedValue
è una variabile dell'oggetto corrente nella pipeline. Vengono visualizzati i contatori con un CookedValue minore di 20.
Esempio 14: Ordinare i dati del contatore delle prestazioni
In questo esempio viene illustrato come ordinare i dati dei contatori delle prestazioni. Nell'esempio vengono trovati i processi nel computer che utilizzano la maggior parte del tempo del processore durante l'esempio.
$Procs = Get-Counter -Counter "\Process(*)\% Processor Time"
$Procs.CounterSamples | Sort-Object -Property CookedValue -Descending |
Format-Table -Property Path, InstanceName, CookedValue -AutoSize
Path InstanceName CookedValue
---- ------------ -----------
\\Computer01\process(_total)\% processor time _total 395.464129650573
\\Computer01\process(idle)\% processor time idle 389.356575524695
\\Computer01\process(mssense)\% processor time mssense 3.05377706293879
\\Computer01\process(csrss#1)\% processor time csrss 1.52688853146939
\\Computer01\process(microsoftedgecp#10)\% processor time microsoftedgecp 1.52688853146939
\\Computer01\process(runtimebroker#5)\% processor time runtimebroker 0
\\Computer01\process(settingsynchost)\% processor time settingsynchost 0
\\Computer01\process(microsoftedgecp#16)\% processor time microsoftedgecp 0
Get-Counter
utilizza il parametro Counter per specificare il contatore \Process(*)\% Processor Time
per tutti i processi nel computer locale. Il risultato viene archiviato nella variabile $Procs
. La variabile $Procs
con la proprietà CounterSamples invia gli oggetti PerformanceCounterSample nella pipeline.
Sort-Object
usa il parametro Property per ordinare gli oggetti in base a CookedValue in ordine decrescente.
Format-Table
usa il parametro Proprietà per selezionare le colonne di output. Il parametro AutoSize regola le larghezze delle colonne per ridurre al minimo il troncamento.
Parametri
-ComputerName
Specifica un nome computer o un elenco di nomi remoti separato da virgole. Utilizzare il nome NetBIOS, l'indirizzo IP o il nome di dominio completo del computer.
Per ottenere i dati del contatore delle prestazioni dal computer locale , escludere il parametro ComputerName.
Per l'output, ad esempio un ListSet che contiene la colonna MachineName, un punto (.
) indica il computer locale.
Get-Counter
non si basa sulla remotizzazione di PowerShell. È possibile usare il parametro ComputerName anche se il computer non è configurato per eseguire comandi remoti.
Tipo: | String[] |
Alias: | Cn |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Continuous
Quando si specifica continuo, Get-Counter
raccoglie campioni finché non si preme CTRL+C. I campioni vengono ottenuti ogni secondo per ogni contatore delle prestazioni specificato. Usare il parametro SampleInterval per aumentare l'intervallo tra campioni continui.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Counter
Specifica il percorso di uno o più percorsi dei contatori. I percorsi sono input come matrice delimitata da virgole, una variabile o valori di un file di testo. È possibile inviare le stringhe di percorso di contro attraverso la pipeline a Get-Counter
.
I percorsi dei contatori usano la sintassi seguente:
\\ComputerName\CounterSet(Instance)\CounterName
\CounterSet(Instance)\CounterName
Per esempio:
\\Server01\Processor(*)\% User Time
\Processor(*)\% User Time
Il \\ComputerName
è facoltativo in un percorso di contatore delle prestazioni. Se il percorso del contatore non include il nome del computer, Get-Counter
usa il computer locale.
Un asterisco (*
) nell'istanza è un carattere jolly per ottenere tutte le istanze del contatore.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | True |
-ListSet
Elenca i set di contatori delle prestazioni nei computer. Usare un asterisco (*
) per specificare tutti i set di contatori. Immettere un nome o una stringa di nomi di set di contatori delimitata da virgole. È possibile inviare i nomi dei set di contatori attraverso la pipeline.
Per ottenere percorsi di contatori formattati, usare il parametro ListSet. I percorsi e PathsWithInstances proprietà di ogni insieme di contatori contengono i singoli percorsi dei contatori formattati come stringa.
È possibile salvare le stringhe di percorso del contatore in una variabile o usare la pipeline per inviare la stringa a un altro comando Get-Counter
.
Ad esempio, per inviare ogni percorso del contatore processore a Get-Counter
:
Get-Counter -ListSet Processor | Get-Counter
Nota
In PowerShell 7, non è possibile recuperare la proprietà Description Get-Counter
del set di contatori . Il Description è impostato su $null
.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | True |
-MaxSamples
Specifica il numero di campioni da ottenere da ogni contatore delle prestazioni specificato. Per ottenere un flusso costante di esempi, usare il parametro continuo.
Se il parametro MaxSamples non è specificato, Get-Counter
ottiene un solo campione per ogni contatore specificato.
Per raccogliere un set di dati di grandi dimensioni, eseguire Get-Counter
come processo in background di PowerShell. Per altre informazioni, vedere about_Jobs.
Tipo: | Int64 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-SampleInterval
Specifica il numero di secondi tra i campioni per ogni contatore delle prestazioni specificato. Se il parametro SampleInterval non viene specificato, Get-Counter
usa un intervallo di un secondo.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
String[]
Get-Counter
accetta l'input della pipeline per i percorsi dei contatori e i nomi dei set di contatori.
Output
Con il parametro ListSet, questo cmdlet restituisce gli oggetti CounterSet.
Per impostazione predefinita e con il parametro Counter, questo cmdlet restituisce oggetti PerformanceCounterSampleSet.
Note
Se non vengono specificati parametri, Get-Counter
ottiene un campione per ogni contatore delle prestazioni specificato. Usare i parametri MaxSamples e continuous per ottenere altri esempi.
Get-Counter
usa un intervallo di un secondo tra i campioni. Usare il parametro SampleInterval per aumentare l'intervallo.
I valori MaxSamples e SampleInterval si applicano su tutti i contatori di ogni computer nel comando. Per impostare valori diversi per contatori diversi, immettere comandi Get-Counter
separati.
In PowerShell 7, quando si usa il parametro ListSet, Get-Counter
non è in grado di recuperare la proprietà description del set di contatori. Il Description è impostato su $null
.