質問編集履歴

2

質問要点の明確化

2020/03/16 02:49

投稿

DreamTheater
DreamTheater

スコア1095

test CHANGED
@@ -1 +1 @@
1
- Windows 10 フルスキャン実行中CPU使用率の上限をVBScriptで変更したい
1
+ Windows 10 CPU使用率の上限をVBScriptで変更したい
test CHANGED
@@ -1,18 +1,30 @@
1
1
  ### 経緯
2
2
 
3
- McAfeeのフルスキャンを毎週計画起動しているのですが、CPU使用率が100%に到達するとPC本体のファンがフル回転し
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
- ### 試作コード1
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
- ### 結果1
55
+ 2のMcAfeeフルスキャンが開始した頃合いでコンパネの電源設定で「最大のプロセッサの状態」は80%に
54
56
 
55
- 上記スクリプトを実行したところ、CPU使用率は100%まで上昇、ファン音が発生してしまいました。
57
+ 変更されているのですが、CPU使用率は80%を超えほぼ100%となりました。
56
-
57
- ※フルスキャン中、コンパネの「最大のプロセッサの状態」は80%と表示されていたのですが。。。
58
58
 
59
59
 
60
60
 
61
- ### 試作コード2
61
+ ### 試行(Sleepの挿入)
62
62
 
63
- (根拠な)、CPU使用率の最大を80%に設定した直後に10秒Sleepを入れて再実行。
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
- '10秒待ち合わせ
85
+ '30秒待ち合わせ
86
86
 
87
- Wscript.Sleep 10000
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
- '==CPU使用率の最大を100%に戻
101
+ 思われたのですが、別のPCで実行すると4台中2台でCPU使用率100%まで上昇してしまいま
100
102
 
101
- cmdString = "powercfg /SETACVALUEINDEX SCHEME_BALANCED SUB_PROCESSOR PROCTHROTTLEMAX 100"
103
+ 使用率100%のPCにおいてもコンパネの「最大のプロセッサの状態」は80%と表示されています。
102
104
 
103
- shellObj.Run(cmdString, 0, True)
105
+ ※本スクリプト実行直前までCPU使用率は10%未満でした。
104
-
105
- ```
106
106
 
107
107
 
108
108
 
109
- ### 結果2
109
+ ### 確認事項
110
110
 
111
- フルスキャが始まってもCPU使用率は80%に上がらず、ファン音かったのでまくいった
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

コードにシェルオブジェクト生成を追記

2020/03/16 02:49

投稿

DreamTheater
DreamTheater

スコア1095

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