我正在嘗試在 PowerShell 中執行以下代碼,但出現以下錯誤(請參閱螢屏截圖)。我已經嘗試了很多方法來處理這個錯誤,但沒有運氣。
我參考了這些文章:
$id = get-random $Source = @” using OpenHardwareMonitor.Hardware; using System; namespace GetCpuTemperatureExample { public class GetCpuTemerature$id : IVisitor { public void VisitComputer(IComputer computer) { computer.Traverse(this); } public void VisitHardware(IHardware hardware) { hardware.Update(); foreach (IHardware subHardware in hardware.SubHardware) subHardware.Accept(this); } public void VisitSensor(ISensor sensor) { } public void VisitParameter(IParameter parameter) { } public static double GetSystemInfo(GetCpuTemerature$id updateVisitor) { double result=0; try { Computer computer = new Computer(); computer.Open(); computer.CPUEnabled = true; computer.Accept(updateVisitor); for (int i = 0; i < computer.Hardware.Length; i ) { double sum = 0; int countOfCPU = 0; if (computer.Hardware[i].HardwareType == HardwareType.CPU) { for (int j = 0; j < computer.Hardware[i].Sensors.Length; j ) { if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature) { if (computer.Hardware[i].Sensors[j].Name.Contains("Core")) { sum = Convert.ToDouble(computer.Hardware[i].Sensors[j].Value.ToString()); countOfCPU ; } } } result=(sum / countOfCPU); } } computer.Close(); } catch (Exception ex) { } return result; } } } "@ $referencedAssemblies = "C:\Program Files\OpenHardwareMonitorLib.dll" Import-Module 'C:\Program Files\OpenHardwareMonitorLib.dll' Add-Type -Path $referencedAssemblies $cpar = New-Object System.CodeDom.Compiler.CompilerParameters $cpar.ReferencedAssemblies.Add($referencedAssemblies) Add-Type -TypeDefinition $Source -CompilerParameters $cpar -Language CSharp $GetCpuTemeratureObj = New-Object GetCpuTemerature$id $CPUTemp = [GetCpuTemperatureExample.GetCpuTemerature]::GetSystemInfo($GetCpuTemeratureObj) echo $CPUTempuj5u.com熱心網友回復:
在這兩種情況下都需要使用完整的型別名稱(包括名稱空間和末尾的 ID):
$GetCpuTemeratureObj = New-Object "GetCpuTemperatureExample.GetCpuTemerature$id" $CPUTemp = ([type]"GetCpuTemperatureExample.GetCpuTemerature$id")::GetSystemInfo($GetCpuTemeratureObj) echo $CPUTemp
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/452582.html
