Please see below example how you can obtain values of the Temperature counter:
I have added counter for the Thermal Zone Information in the Performance Monitor like below:

And here is my console app, which is getting the value of the counter:
using System;
using System.Diagnostics;
using System.Threading;
namespace ConsoleApp
{
public class Program
{
public static void Main(params string[] args)
{
PerformanceCounterCategory performanceCounterCategory = new PerformanceCounterCategory("Thermal Zone Information");
var instances = performanceCounterCategory.GetInstanceNames();
List<PerformanceCounter> temperatureCounters = new List<PerformanceCounter>();
foreach (string instanceName in instances)
{
foreach (PerformanceCounter counter in performanceCounterCategory.GetCounters(instanceName))
{
if (counter.CounterName == "Temperature")
{
temperatureCounters.Add(counter);
}
}
}
while(true)
{
foreach (PerformanceCounter counter in temperatureCounters)
{
Console.WriteLine("{0} {1} {2} {3}",counter.CategoryName,counter.CounterName,counter.InstanceName, counter.NextValue());
}
Console.WriteLine();
Console.WriteLine();
Thread.Sleep(500);
}
}
}
}
As you can see the values of the constructor are correspondingly are :
PerformanceCounter(
"Thermal Zone Information", // Object
"Temperature", // Counter
@"\_TZ.TZ01") // Instance