質問編集履歴
2
質問要点の明確化
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Windows 10
|
1
|
+
Windows 10 CPU使用率の上限をVBScriptで変更したい
|
body
CHANGED
@@ -1,11 +1,17 @@
|
|
1
1
|
### 経緯
|
2
|
-
|
2
|
+
『Windows 10 フルスキャン実行中CPU使用率の上限をVBScriptで変更したい』で質問させて頂きましたが、
|
3
|
-
|
3
|
+
要点が的確でなかったようですので質問を変更します。
|
4
|
-
コンパネの電源設定で「プロセッサの電源管理」から「最大のプロセッサの状態」を100から80に変更すると、
|
5
|
-
フルスキャン所要時間は伸びるものの、ファン音が静かになることが確認できたので、以下のようなVBScriptを
|
6
|
-
書いてみました。
|
7
4
|
|
8
|
-
###
|
5
|
+
### やりたいこと
|
6
|
+
VBScriptで以下を実現させたいです。
|
7
|
+
0. CPU使用率の上限を80%に制限する。
|
8
|
+
0. McAfeeフルスキャンを起動する。
|
9
|
+
0. フルスキャンの実行を待ち合わせる。
|
10
|
+
0. CPU使用率上限を100%に戻す。
|
11
|
+
|
12
|
+
1と4それぞれをpowercfgコマンドをVBScriptから実行しているのですが、1が期待通りの結果となりません。
|
13
|
+
|
14
|
+
### CPU使用率の上限を80%に制限するVBScript
|
9
15
|
```VBScript
|
10
16
|
Dim cmdString
|
11
17
|
Dim shellObj
|
@@ -15,58 +21,41 @@
|
|
15
21
|
'==CPU使用率の最大を80%に下げる(ファン音対策)
|
16
22
|
cmdString = "powercfg /SETACVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCTHROTTLEMAX 80"
|
17
23
|
shellObj.Run(cmdString, 0, True)
|
18
|
-
|
19
24
|
'McAfeeフルスキャンを実行
|
20
25
|
|
21
26
|
'McAfeeフルスキャン完了を待ち合わせる。
|
22
|
-
|
23
|
-
'==CPU使用率の最大を100%に戻す
|
24
|
-
cmdString = "powercfg /SETACVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCTHROTTLEMAX 100"
|
25
|
-
shellObj.Run(cmdString, 0, True)
|
26
27
|
```
|
27
|
-
### 結果1
|
28
|
-
上記スクリプトを実行したところ、CPU使用率は100%まで上昇し、ファン音が発生してしまいました。
|
29
|
-
|
28
|
+
2のMcAfeeフルスキャンが開始した頃合いでコンパネの電源設定で「最大のプロセッサの状態」は80%に
|
29
|
+
変更されているのですが、CPU使用率は80%を超えほぼ100%となりました。
|
30
30
|
|
31
|
-
### 試
|
31
|
+
### 試行(Sleepの挿入)
|
32
|
-
(根拠な
|
32
|
+
(根拠はないのですが)、CPU使用率の最大を80%に設定した直後に30秒Sleepを入れて再実行。
|
33
33
|
```VBScript
|
34
34
|
Dim cmdString
|
35
35
|
Dim shellObj
|
36
36
|
|
37
37
|
Set shellObj = CreateObject("WScript.Shell") 'シェルオブジェクトを生成する
|
38
38
|
|
39
|
-
'==CPU使用率の最大を80%に下げる
|
39
|
+
'==CPU使用率の最大を80%に下げる
|
40
40
|
cmdString = "powercfg /SETACVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCTHROTTLEMAX 80"
|
41
41
|
shellObj.Run(cmdString, 0, True)
|
42
42
|
|
43
|
-
'
|
43
|
+
'30秒待ち合わせ
|
44
|
-
Wscript.Sleep
|
44
|
+
Wscript.Sleep 30000
|
45
45
|
|
46
46
|
'McAfeeフルスキャンを実行
|
47
47
|
|
48
48
|
'McAfeeフルスキャン完了を待ち合わせる。
|
49
|
-
|
50
|
-
'==CPU使用率の最大を100%に戻す
|
51
|
-
cmdString = "powercfg /SETACVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCTHROTTLEMAX 100"
|
52
|
-
shellObj.Run(cmdString, 0, True)
|
53
49
|
```
|
50
|
+
コンパネの「最大のプロセッサの状態」は80%に変更され、CPU使用率も80%上限で推移し、うまくいったと
|
51
|
+
思われたのですが、別のPCで実行すると4台中2台でCPU使用率が100%まで上昇してしまいます。
|
52
|
+
使用率100%のPCにおいてもコンパネの「最大のプロセッサの状態」は80%と表示されています。
|
53
|
+
※本スクリプト実行直前までCPU使用率は10%未満でした。
|
54
54
|
|
55
|
-
###
|
55
|
+
### 確認事項
|
56
|
-
|
56
|
+
- powercfgコマンドでCPU上限を80%設定できたとしても、上限超えは起きうるものなのでしょうか?
|
57
|
-
と
|
57
|
+
- Sleep挿入によって一部PCで上限80%となったのはたまたまでしょうか?
|
58
58
|
|
59
|
-
### 問題点
|
60
|
-
別のPC3台で上記スクリプトを実行してみたところ、3台中1台は相変わらずCPU使用率が100%まで上昇し
|
61
|
-
ファン音が鳴り響くままでした。
|
62
|
-
|
59
|
+
先ほどは要領の得ない質問で、コメント頂いた方にご迷惑をお掛けしました。
|
63
60
|
|
64
|
-
### 実現したいこと
|
65
|
-
- CPU使用率上限変更をVBScriptで制御したい
|
66
|
-
→約100台のPCで毎週フルスキャンを行うので、各自にコンパネの「最大のプロセッサの状態」を都度
|
67
|
-
設定させず、スクリプトで制御したい為です。(設定し忘れや戻し忘れを防止したい)
|
68
|
-
|
69
|
-
そもそもpowercfgコマンドは完了まで待ち合わせしているので、10秒以上のSleep挿入で実行結果が
|
70
|
-
変わること自体納得できておりません。
|
71
|
-
|
72
61
|
お力添えの程よろしくお願い致します。
|
1
コードにシェルオブジェクト生成を追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,7 +8,10 @@
|
|
8
8
|
### 試作コード1
|
9
9
|
```VBScript
|
10
10
|
Dim cmdString
|
11
|
+
Dim shellObj
|
11
12
|
|
13
|
+
Set shellObj = CreateObject("WScript.Shell") 'シェルオブジェクトを生成する
|
14
|
+
|
12
15
|
'==CPU使用率の最大を80%に下げる(ファン音対策)
|
13
16
|
cmdString = "powercfg /SETACVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCTHROTTLEMAX 80"
|
14
17
|
shellObj.Run(cmdString, 0, True)
|
@@ -29,7 +32,10 @@
|
|
29
32
|
(根拠なく)、CPU使用率の最大を80%に設定した直後に10秒Sleepを入れて再実行。
|
30
33
|
```VBScript
|
31
34
|
Dim cmdString
|
35
|
+
Dim shellObj
|
32
36
|
|
37
|
+
Set shellObj = CreateObject("WScript.Shell") 'シェルオブジェクトを生成する
|
38
|
+
|
33
39
|
'==CPU使用率の最大を80%に下げる(ファン音対策)
|
34
40
|
cmdString = "powercfg /SETACVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCTHROTTLEMAX 80"
|
35
41
|
shellObj.Run(cmdString, 0, True)
|