Saya mempunyai masalah dengan WMI di mesin dengan Windows 8 Home Edition. Saya perlu mengetahui penggunaan CPU dan ProcessID berdasarkan proses. Saya sudah mencoba banyak cara:
- ShellEksekusi di Delphi
- A *.bat dengan kodenya
- Sebuah *.vbs
- *.vbs dieksekusi oleh *.bat
- A *.ps1
- *.ps1 dieksekusi oleh *.bat
(Mungkin beberapa cara ini bisa sangat bodoh, tapi saya tetap mencobanya)
Di Klik-Pengguna, ini berfungsi dengan sempurna, tetapi pada pemohon mandiri, ini tidak berfungsi. Saya telah membuka Keamanan di WMIMGMT.msi pada beberapa folder dan kebijakan eksekusi (di PowerShell) sekarang TIDAK TERBATAS.
Ini adalah kode pada file *.ps1:
$ErrorActionPreference = "SilentlyContinue"
Stop-Transcript | Out-Null
$ErrorActionPreference = "Continue"
$perflist = (get-wmiobject Win32_PerfFormattedData_PerfProc_Process)
foreach ($p in $peflist) {
"" + $p.IDProcess + ";" + $p.PercentProcessTime
}
Ini adalah kode pada *.bat
powershell -ExcetutionPolicy Unrestricted -File "C:\Somefolder\PP.ps1" > C:\SomeFolder\output.txt
Yang saya dapatkan hanyalah hasil ini:
get-wmiobject : Invalid query "select * from Win32_Win32_PerfFormattedData_PerfProc_Process" In C:\Somefolder\PP.ps1:4 character: 14 + $perflist = (get-wmiobject Win32_PerfFormattedData_PerfProc_Process) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-WmiObject], ManagementException + FullyQualifiedErroID : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
Edit1: Kode disalin seperti yang diminta:
*.ps1:
$ErrorActionPreference="SilentlyContinue" Stop-Transcript | out-null $ErrorActionPreference = "Continue" $perflist = (get-wmiobject Win32_PerfFormattedData_PerfProc_Process) foreach ($p in $perflist) { "" + $p.IDProcess + ";" + $p.PercentProcessorTime }
*.kelelawar
powershell -executionPolicy unrestricted -file "C:\MonitorPerformance\test.ps1" > C:\MonitorPerformance\output1.txt
Output: (Konsultasi inválida = Kueri Tidak Valid; Tidak = masuk; karakter = karakter)
get-wmiobject : Consulta inv lida "select * from Win32_PerfFormattedData_PerfProc_Process" No C:\MonitorPerformance\test.ps1:4 caractere:14 + $perflist = (get-wmiobject Win32_PerfFormattedData_PerfProc_Process) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-WmiObject], ManagementException + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
Win32_Win32_PerfFormattedData_PerfProc_Process
), yang Anda koreksi. Apakah Anda masih mendapatkan kesalahan? - person Ansgar Wiechers   schedule 07.01.2016$perflist = (get-wmiobject Win32_PerfFormattedData_PerfProc_Process) foreach ($p in $peflist) { "" + $p.IDProcess + ";" + $p.PercentProcessTime }
menjadi:get-wmiobject Win32_OperatingSystem
(hanya tes) dan berhasil! Aku masih tidak tahu apa yang sedang terjadi... - person Nick G.   schedule 07.01.2016get-wmiobject Win32_PerfFormattedData_PerfProc_Process
. Harap edit pertanyaan Anda dan kirimkan kode tepat dan pesan kesalahan. Salin dan tempel. Jangan memparafrasekan. Jangan mengetik dari memori. - person Ansgar Wiechers   schedule 08.01.2016wbemtest
, menghubungkan dan menghitung instance kelas itu? Coba juga jalankan WMIDiag. - person Ansgar Wiechers   schedule 08.01.2016