質問編集履歴
2
質問要点の明確化
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Windows 10
|
1
|
+
Windows 10 CPU使用率の上限をVBScriptで変更したい
|
test
CHANGED
@@ -1,18 +1,30 @@
|
|
1
1
|
### 経緯
|
2
2
|
|
3
|
-
|
3
|
+
『Windows 10 フルスキャン実行中CPU使用率の上限をVBScriptで変更したい』で質問させて頂きましたが、
|
4
4
|
|
5
|
-
|
5
|
+
要点が的確でなかったようですので質問を変更します。
|
6
|
-
|
7
|
-
コンパネの電源設定で「プロセッサの電源管理」から「最大のプロセッサの状態」を100から80に変更すると、
|
8
|
-
|
9
|
-
フルスキャン所要時間は伸びるものの、ファン音が静かになることが確認できたので、以下のようなVBScriptを
|
10
|
-
|
11
|
-
書いてみました。
|
12
6
|
|
13
7
|
|
14
8
|
|
15
|
-
###
|
9
|
+
### やりたいこと
|
10
|
+
|
11
|
+
VBScriptで以下を実現させたいです。
|
12
|
+
|
13
|
+
0. CPU使用率の上限を80%に制限する。
|
14
|
+
|
15
|
+
0. McAfeeフルスキャンを起動する。
|
16
|
+
|
17
|
+
0. フルスキャンの実行を待ち合わせる。
|
18
|
+
|
19
|
+
0. CPU使用率上限を100%に戻す。
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
1と4それぞれをpowercfgコマンドをVBScriptから実行しているのですが、1が期待通りの結果となりません。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
### CPU使用率の上限を80%に制限するVBScript
|
16
28
|
|
17
29
|
```VBScript
|
18
30
|
|
@@ -32,35 +44,23 @@
|
|
32
44
|
|
33
45
|
shellObj.Run(cmdString, 0, True)
|
34
46
|
|
35
|
-
|
36
|
-
|
37
47
|
'McAfeeフルスキャンを実行
|
38
48
|
|
39
49
|
|
40
50
|
|
41
51
|
'McAfeeフルスキャン完了を待ち合わせる。
|
42
52
|
|
43
|
-
|
44
|
-
|
45
|
-
'==CPU使用率の最大を100%に戻す
|
46
|
-
|
47
|
-
cmdString = "powercfg /SETACVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCTHROTTLEMAX 100"
|
48
|
-
|
49
|
-
shellObj.Run(cmdString, 0, True)
|
50
|
-
|
51
53
|
```
|
52
54
|
|
53
|
-
|
55
|
+
2のMcAfeeフルスキャンが開始した頃合いでコンパネの電源設定で「最大のプロセッサの状態」は80%に
|
54
56
|
|
55
|
-
|
57
|
+
変更されているのですが、CPU使用率は80%を超えほぼ100%となりました。
|
56
|
-
|
57
|
-
※フルスキャン中、コンパネの「最大のプロセッサの状態」は80%と表示されていたのですが。。。
|
58
58
|
|
59
59
|
|
60
60
|
|
61
|
-
### 試
|
61
|
+
### 試行(Sleepの挿入)
|
62
62
|
|
63
|
-
(根拠な
|
63
|
+
(根拠はないのですが)、CPU使用率の最大を80%に設定した直後に30秒Sleepを入れて再実行。
|
64
64
|
|
65
65
|
```VBScript
|
66
66
|
|
@@ -74,7 +74,7 @@
|
|
74
74
|
|
75
75
|
|
76
76
|
|
77
|
-
'==CPU使用率の最大を80%に下げる
|
77
|
+
'==CPU使用率の最大を80%に下げる
|
78
78
|
|
79
79
|
cmdString = "powercfg /SETACVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCTHROTTLEMAX 80"
|
80
80
|
|
@@ -82,9 +82,9 @@
|
|
82
82
|
|
83
83
|
|
84
84
|
|
85
|
-
'
|
85
|
+
'30秒待ち合わせ
|
86
86
|
|
87
|
-
Wscript.Sleep
|
87
|
+
Wscript.Sleep 30000
|
88
88
|
|
89
89
|
|
90
90
|
|
@@ -94,49 +94,27 @@
|
|
94
94
|
|
95
95
|
'McAfeeフルスキャン完了を待ち合わせる。
|
96
96
|
|
97
|
+
```
|
97
98
|
|
99
|
+
コンパネの「最大のプロセッサの状態」は80%に変更され、CPU使用率も80%上限で推移し、うまくいったと
|
98
100
|
|
99
|
-
|
101
|
+
思われたのですが、別のPCで実行すると4台中2台でCPU使用率が100%まで上昇してしまいます。
|
100
102
|
|
101
|
-
|
103
|
+
使用率100%のPCにおいてもコンパネの「最大のプロセッサの状態」は80%と表示されています。
|
102
104
|
|
103
|
-
|
105
|
+
※本スクリプト実行直前までCPU使用率は10%未満でした。
|
104
|
-
|
105
|
-
```
|
106
106
|
|
107
107
|
|
108
108
|
|
109
|
-
###
|
109
|
+
### 確認事項
|
110
110
|
|
111
|
-
|
111
|
+
- powercfgコマンドでCPU上限を80%設定できたとしても、上限超えは起きうるものなのでしょうか?
|
112
112
|
|
113
|
-
と
|
113
|
+
- Sleep挿入によって一部PCで上限80%となったのはたまたまでしょうか?
|
114
114
|
|
115
115
|
|
116
116
|
|
117
|
-
### 問題点
|
118
|
-
|
119
|
-
別のPC3台で上記スクリプトを実行してみたところ、3台中1台は相変わらずCPU使用率が100%まで上昇し
|
120
|
-
|
121
|
-
ファン音が鳴り響くままでした。
|
122
|
-
|
123
|
-
※Sleep時間は30秒に変更しています。
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
### 実現したいこと
|
128
|
-
|
129
|
-
- CPU使用率上限変更をVBScriptで制御したい
|
130
|
-
|
131
|
-
→約100台のPCで毎週フルスキャンを行うので、各自にコンパネの「最大のプロセッサの状態」を都度
|
132
|
-
|
133
|
-
|
117
|
+
先ほどは要領の得ない質問で、コメント頂いた方にご迷惑をお掛けしました。
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
そもそもpowercfgコマンドは完了まで待ち合わせしているので、10秒以上のSleep挿入で実行結果が
|
138
|
-
|
139
|
-
変わること自体納得できておりません。
|
140
118
|
|
141
119
|
|
142
120
|
|
1
コードにシェルオブジェクト生成を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -17,6 +17,12 @@
|
|
17
17
|
```VBScript
|
18
18
|
|
19
19
|
Dim cmdString
|
20
|
+
|
21
|
+
Dim shellObj
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
Set shellObj = CreateObject("WScript.Shell") 'シェルオブジェクトを生成する
|
20
26
|
|
21
27
|
|
22
28
|
|
@@ -59,6 +65,12 @@
|
|
59
65
|
```VBScript
|
60
66
|
|
61
67
|
Dim cmdString
|
68
|
+
|
69
|
+
Dim shellObj
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
Set shellObj = CreateObject("WScript.Shell") 'シェルオブジェクトを生成する
|
62
74
|
|
63
75
|
|
64
76
|
|