PerformanceCounterCategory.GetCounters 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
擷取這個效能計數器分類中的計數器清單。
多載
GetCounters() |
擷取只包含一個執行個體的效能計數器分類中的計數器清單。 |
GetCounters(String) |
擷取包含一個或多個執行個體的效能計數器分類中的計數器清單。 |
GetCounters()
擷取只包含一個執行個體的效能計數器分類中的計數器清單。
public:
cli::array <System::Diagnostics::PerformanceCounter ^> ^ GetCounters();
public System.Diagnostics.PerformanceCounter[] GetCounters ();
member this.GetCounters : unit -> System.Diagnostics.PerformanceCounter[]
Public Function GetCounters () As PerformanceCounter()
傳回
PerformanceCounter 物件的陣列,指出與這個單一執行個體效能計數器分類相關的計數器。
例外狀況
分類不是單一的執行個體。
對基礎系統 API 的呼叫失敗。
此分類沒有相關聯的執行個體。
以不具有系統管理員權限執行的程式碼嘗試讀取效能計數器。
範例
下列程式代碼範例會取得 中的PerformanceCounterCategory物件清單PerformanceCounter。 它會先 PerformanceCounterCategory 根據是否指定電腦名稱,建立具有適當建構函式的 。 然後, GetCounters 它會使用 方法來傳回 對象的陣列 PerformanceCounter ,並根據是否已指定實例名稱來選取 GetCounters 多載。
除非 GetCounters() 此多載與單一實例類別搭配使用,否則此多載會失敗。
public:
static void Main(array<String^>^ args)
{
String^ categoryName = "";
String^ machineName = "";
String^ instanceName = "";
PerformanceCounterCategory^ pcc;
array<PerformanceCounter^>^ counters;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[1];
machineName = args[2]=="."? "": args[2];
instanceName = args[3];
}
catch (...)
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Create the appropriate PerformanceCounterCategory object.
if (machineName->Length>0)
{
pcc = gcnew PerformanceCounterCategory(categoryName, machineName);
}
else
{
pcc = gcnew PerformanceCounterCategory(categoryName);
}
// Get the counters for this instance or a single instance
// of the selected category.
if (instanceName->Length > 0)
{
counters = pcc->GetCounters(instanceName);
}
else
{
counters = pcc->GetCounters();
}
}
catch (Exception^ ex)
{
Console::WriteLine("Unable to get counter information for " +
(instanceName->Length>0? "instance \"{2}\" in ": "single-instance ") +
"category \"{0}\" on " + (machineName->Length>0? "computer \"{1}\":": "this computer:"),
categoryName, machineName, instanceName);
Console::WriteLine(ex->Message);
return;
}
// Display the counter names if GetCounters was successful.
if (counters != nullptr)
{
Console::WriteLine("These counters exist in " +
(instanceName->Length > 0 ? "instance \"{1}\" of" : "single instance") +
" category {0} on " + (machineName->Length > 0 ? "computer \"{2}\":": "this computer:"),
categoryName, instanceName, machineName);
// Display a numbered list of the counter names.
int objX;
for(objX = 0; objX < counters->Length; objX++)
{
Console::WriteLine("{0,4} - {1}", objX + 1, counters[objX]->CounterName);
}
}
}
public static void Main(string[] args)
{
string categoryName = "";
string machineName = "";
string instanceName = "";
PerformanceCounterCategory pcc;
PerformanceCounter[] counters;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[0];
machineName = args[1]=="."? "": args[1];
instanceName = args[2];
}
catch
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Create the appropriate PerformanceCounterCategory object.
if (machineName.Length>0)
{
pcc = new PerformanceCounterCategory(categoryName, machineName);
}
else
{
pcc = new PerformanceCounterCategory(categoryName);
}
// Get the counters for this instance or a single instance
// of the selected category.
if (instanceName.Length>0)
{
counters = pcc.GetCounters(instanceName);
}
else
{
counters = pcc.GetCounters();
}
}
catch(Exception ex)
{
Console.WriteLine("Unable to get counter information for " +
(instanceName.Length>0? "instance \"{2}\" in ": "single-instance ") +
"category \"{0}\" on " + (machineName.Length>0? "computer \"{1}\":": "this computer:"),
categoryName, machineName, instanceName);
Console.WriteLine(ex.Message);
return;
}
// Display the counter names if GetCounters was successful.
if (counters!=null)
{
Console.WriteLine("These counters exist in " +
(instanceName.Length>0? "instance \"{1}\" of": "single instance") +
" category {0} on " + (machineName.Length>0? "computer \"{2}\":": "this computer:"),
categoryName, instanceName, machineName);
// Display a numbered list of the counter names.
int objX;
for(objX=0; objX<counters.Length; objX++)
{
Console.WriteLine("{0,4} - {1}", objX+1, counters[objX].CounterName);
}
}
}
Sub Main(ByVal args() As String)
Dim categoryName As String = ""
Dim machineName As String = ""
Dim instanceName As String = ""
Dim pcc As PerformanceCounterCategory
Dim counters() As PerformanceCounter
' Copy the supplied arguments into the local variables.
Try
categoryName = args(0)
machineName = IIf(args(1) = ".", "", args(1))
instanceName = args(2)
Catch ex As Exception
' Ignore the exception from non-supplied arguments.
End Try
Try
' Create the appropriate PerformanceCounterCategory object.
If machineName.Length > 0 Then
pcc = New PerformanceCounterCategory(categoryName, machineName)
Else
pcc = New PerformanceCounterCategory(categoryName)
End If
' Get the counters for this instance or a single instance
' of the selected category.
If instanceName.Length > 0 Then
counters = pcc.GetCounters(instanceName)
Else
counters = pcc.GetCounters()
End If
Catch ex As Exception
Console.WriteLine("Unable to get counter information for " & _
IIf(instanceName.Length > 0, "instance ""{2}"" in ", _
"single-instance ") & "category ""{0}"" on " & _
IIf(machineName.Length > 0, "computer ""{1}"":", _
"this computer:"), _
categoryName, machineName, instanceName)
Console.WriteLine(ex.Message)
Return
End Try
' Display the counter names if GetCounters was successful.
If Not counters Is Nothing Then
Console.WriteLine("These counters exist in " & _
IIf(instanceName.Length > 0, "instance ""{1}"" of", _
"single instance") & " category {0} on " & _
IIf(machineName.Length > 0, _
"computer ""{2}"":", "this computer:"), _
categoryName, instanceName, machineName)
' Display a numbered list of the counter names.
Dim objX As Integer
For objX = 0 To counters.Length - 1
Console.WriteLine("{0,4} - {1}", objX + 1, _
counters(objX).CounterName)
Next objX
End If
End Sub
備註
如需效能物件實例的詳細資訊,請參閱 PerformanceCounter 類別概觀。
注意
若要從 Windows Vista 和更新版本中的非互動式登入會話讀取性能計數器、Windows XP Professional x64 Edition 或 Windows Server 2003,您必須是 效能監視器 Users 群組的成員,或具有系統管理許可權。
若要避免提高許可權以存取 Windows Vista 和更新版本中的性能計數器,請將您自己新增至 效能監視器 Users 群組。
在 Windows Vista (含) 以後版本中,使用者帳戶控制 (UAC) 會判斷使用者的權限。 如果您是內建 Administrators 群組的成員,系統會將兩個執行階段存取語彙基元 (Token) 指派給您:標準使用者存取語彙基元及管理員存取語彙基元。 根據預設,您會屬於標準使用者角色。 若要執行存取性能計數器的程式代碼,您必須先將許可權從標準使用者提升為系統管理員。 您可以在啟動應用程式時,以滑鼠右鍵按一下應用程式圖示,並指出您想要以系統管理員身分執行,藉此提高為系統管理員權限。
另請參閱
適用於
GetCounters(String)
擷取包含一個或多個執行個體的效能計數器分類中的計數器清單。
public:
cli::array <System::Diagnostics::PerformanceCounter ^> ^ GetCounters(System::String ^ instanceName);
public System.Diagnostics.PerformanceCounter[] GetCounters (string instanceName);
member this.GetCounters : string -> System.Diagnostics.PerformanceCounter[]
Public Function GetCounters (instanceName As String) As PerformanceCounter()
參數
- instanceName
- String
要為其擷取相關計數器清單的效能物件執行個體。
傳回
PerformanceCounter 物件的陣列,指出與這個效能計數器分類的指定物件執行個體相關的計數器。
例外狀況
instanceName
參數為 null
。
對基礎系統 API 的呼叫失敗。
以不具有系統管理員權限執行的程式碼嘗試讀取效能計數器。
範例
下列程式代碼範例會取得 中的PerformanceCounterCategory物件清單PerformanceCounter。 它會先 PerformanceCounterCategory 根據是否指定電腦名稱,建立具有適當建構函式的 。 然後, GetCounters 它會使用 方法來傳回 對象的陣列 PerformanceCounter ,並根據是否已指定實例名稱來選取 GetCounters 多載。
除非此多載與包含實例的類別搭配使用,否則此 GetCounters(String) 多載會失敗。
public:
static void Main(array<String^>^ args)
{
String^ categoryName = "";
String^ machineName = "";
String^ instanceName = "";
PerformanceCounterCategory^ pcc;
array<PerformanceCounter^>^ counters;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[1];
machineName = args[2]=="."? "": args[2];
instanceName = args[3];
}
catch (...)
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Create the appropriate PerformanceCounterCategory object.
if (machineName->Length>0)
{
pcc = gcnew PerformanceCounterCategory(categoryName, machineName);
}
else
{
pcc = gcnew PerformanceCounterCategory(categoryName);
}
// Get the counters for this instance or a single instance
// of the selected category.
if (instanceName->Length > 0)
{
counters = pcc->GetCounters(instanceName);
}
else
{
counters = pcc->GetCounters();
}
}
catch (Exception^ ex)
{
Console::WriteLine("Unable to get counter information for " +
(instanceName->Length>0? "instance \"{2}\" in ": "single-instance ") +
"category \"{0}\" on " + (machineName->Length>0? "computer \"{1}\":": "this computer:"),
categoryName, machineName, instanceName);
Console::WriteLine(ex->Message);
return;
}
// Display the counter names if GetCounters was successful.
if (counters != nullptr)
{
Console::WriteLine("These counters exist in " +
(instanceName->Length > 0 ? "instance \"{1}\" of" : "single instance") +
" category {0} on " + (machineName->Length > 0 ? "computer \"{2}\":": "this computer:"),
categoryName, instanceName, machineName);
// Display a numbered list of the counter names.
int objX;
for(objX = 0; objX < counters->Length; objX++)
{
Console::WriteLine("{0,4} - {1}", objX + 1, counters[objX]->CounterName);
}
}
}
public static void Main(string[] args)
{
string categoryName = "";
string machineName = "";
string instanceName = "";
PerformanceCounterCategory pcc;
PerformanceCounter[] counters;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[0];
machineName = args[1]=="."? "": args[1];
instanceName = args[2];
}
catch
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Create the appropriate PerformanceCounterCategory object.
if (machineName.Length>0)
{
pcc = new PerformanceCounterCategory(categoryName, machineName);
}
else
{
pcc = new PerformanceCounterCategory(categoryName);
}
// Get the counters for this instance or a single instance
// of the selected category.
if (instanceName.Length>0)
{
counters = pcc.GetCounters(instanceName);
}
else
{
counters = pcc.GetCounters();
}
}
catch(Exception ex)
{
Console.WriteLine("Unable to get counter information for " +
(instanceName.Length>0? "instance \"{2}\" in ": "single-instance ") +
"category \"{0}\" on " + (machineName.Length>0? "computer \"{1}\":": "this computer:"),
categoryName, machineName, instanceName);
Console.WriteLine(ex.Message);
return;
}
// Display the counter names if GetCounters was successful.
if (counters!=null)
{
Console.WriteLine("These counters exist in " +
(instanceName.Length>0? "instance \"{1}\" of": "single instance") +
" category {0} on " + (machineName.Length>0? "computer \"{2}\":": "this computer:"),
categoryName, instanceName, machineName);
// Display a numbered list of the counter names.
int objX;
for(objX=0; objX<counters.Length; objX++)
{
Console.WriteLine("{0,4} - {1}", objX+1, counters[objX].CounterName);
}
}
}
Sub Main(ByVal args() As String)
Dim categoryName As String = ""
Dim machineName As String = ""
Dim instanceName As String = ""
Dim pcc As PerformanceCounterCategory
Dim counters() As PerformanceCounter
' Copy the supplied arguments into the local variables.
Try
categoryName = args(0)
machineName = IIf(args(1) = ".", "", args(1))
instanceName = args(2)
Catch ex As Exception
' Ignore the exception from non-supplied arguments.
End Try
Try
' Create the appropriate PerformanceCounterCategory object.
If machineName.Length > 0 Then
pcc = New PerformanceCounterCategory(categoryName, machineName)
Else
pcc = New PerformanceCounterCategory(categoryName)
End If
' Get the counters for this instance or a single instance
' of the selected category.
If instanceName.Length > 0 Then
counters = pcc.GetCounters(instanceName)
Else
counters = pcc.GetCounters()
End If
Catch ex As Exception
Console.WriteLine("Unable to get counter information for " & _
IIf(instanceName.Length > 0, "instance ""{2}"" in ", _
"single-instance ") & "category ""{0}"" on " & _
IIf(machineName.Length > 0, "computer ""{1}"":", _
"this computer:"), _
categoryName, machineName, instanceName)
Console.WriteLine(ex.Message)
Return
End Try
' Display the counter names if GetCounters was successful.
If Not counters Is Nothing Then
Console.WriteLine("These counters exist in " & _
IIf(instanceName.Length > 0, "instance ""{1}"" of", _
"single instance") & " category {0} on " & _
IIf(machineName.Length > 0, _
"computer ""{2}"":", "this computer:"), _
categoryName, instanceName, machineName)
' Display a numbered list of the counter names.
Dim objX As Integer
For objX = 0 To counters.Length - 1
Console.WriteLine("{0,4} - {1}", objX + 1, _
counters(objX).CounterName)
Next objX
End If
End Sub
備註
若要表示單一實例類別目錄,請為 參數傳遞空字串 (“”) instanceName
。
如需效能物件實例的詳細資訊,請參閱 PerformanceCounter 類別概觀。
注意
若要從 Windows Vista 和更新版本中的非互動式登入會話讀取性能計數器、Windows XP Professional x64 Edition 或 Windows Server 2003,您必須是 效能監視器 Users 群組的成員,或具有系統管理許可權。
若要避免提高許可權以存取 Windows Vista 和更新版本中的性能計數器,請將您自己新增至 效能監視器 Users 群組。
在 Windows Vista (含) 以後版本中,使用者帳戶控制 (UAC) 會判斷使用者的權限。 如果您是內建 Administrators 群組的成員,系統會將兩個執行階段存取語彙基元 (Token) 指派給您:標準使用者存取語彙基元及管理員存取語彙基元。 根據預設,您會屬於標準使用者角色。 若要執行存取性能計數器的程式代碼,您必須先將許可權從標準使用者提升為系統管理員。 您可以在啟動應用程式時,以滑鼠右鍵按一下應用程式圖示,並指出您想要以系統管理員身分執行,藉此提高為系統管理員權限。