現役情シスが送る実践的Tips集

2020/08/19

【Windows10】低スペックPCはクリーンアップスクリプトで乗り切ろう

event_note8月 19, 2020 forumNo comments
こんにちは。
今回は低スペックなWindows7PCをWindows10にアップグレードしたことで性能不足に悩む人々に向けたTipsです。

 

概要

Windows7全盛期のPCと言えばメモリ2~4GB、ディスクはHDDといったところだと思いますが、
これではWindows10を満足に使いこなすことができないのは周知の事実かと思います。
性能が不足していると動作遅延であったりスリープから復帰しない等の電源周りの動作不全も引き起こします。
※ 個人的見解です
 
訳あってPCの買い替えができず低スペックのWindows10でやり繰りしないといけない方のために、
少しでも動作を軽くするための方法の一つとしてディスクのデフラグとクリーンアップを
簡単確実かつ任意のタイミングで行う方法をご紹介します。

 

解説

通常、WindowsPCのディスクのデフラグとクリーンアップは手動であればGUI操作で、
自動であればメンテナンス機能がバックグラウンドで勝手に処理してくれます。

しかし、GUI操作はそこそこWindowsの知識が必要な上にクリーンアップを完全に行うには
管理者権限が必要なため企業のシステム管理者にとっては歯痒い存在です。
一方、メンテナンス機能に関しては放っておけば勝手にやってくれるとは言え、
100%クリーンアップするには数日の猶予期間が設けられているため
すぐにキャッシュを削除してくれずヤキモキさせられます。
 
ピンと来ない方のためにGUI操作を行う場合の実際の画像を以下にご用意しました。 
f:id:cool-f:20200211200151p:plain
ディスクのデフラグ

f:id:cool-f:20200211200331p:plain
ディスクのクリーンアップ

今回はこの2つの操作を一般ユーザー権限のアカウントでも行える設定手順を解説します。

 

設定手順

タスクスケジューラにタスク作成

管理者権限が必要な作業を一般ユーザー権限のアカウントで実行する方法は幾つかありますが、
今回はタスクスケジューラを使った方法で行いたいと思います。
コマンドプロンプトを起動して以下のコマンドを実行します。青字部分は環境に合わせてください。
 
★デフラグ用タスク

schtasks /create /ru example.local\administrator /rp p@ssw0rd /tn ManualDefrag_%username% /tr "defrag.exe %systemdrive% /h /o" /sc once /st 00:00 /f

★クリーンアップ用タスク

schtasks /create /ru example.local\administrator /rp p@ssw0rd /tn ManualDiskClean_%username% /tr "dism.exe /online /cleanup-image /startcomponentcleanup /resetbase" /sc once /st 00:00 /f

 
コマンド内の各オプション説明は今回は割愛させていただきますが、
ポイントは /tnオプション で指定するタスク名に %username% を付与している点です。

これは自作タスクは他者アカウントでは実行できないため、
ログオンしたユーザーごとにタスク登録ができるようにタスク名を区別しているのです。
PC故障などで予備機と交換したりすると利用者がコロコロ変わる可能性があるため、その対策となります。
組織の管理者は上記コマンドをバッチ化させてADのログオンスクリプトに仕込むのが良いでしょう。
 
以下はコマンド実行直後のタスクスケジューラの画面です。
f:id:cool-f:20200211221224p:plain
タスク作成直後のタスクスケジューラ

※ ワークグループ環境の方は自分自身が管理者権限をお持ちだと思うので、
※ 上記コマンドのそれぞれ /tr 以降のダブルクォーテーションで囲まれた部分だけをバッチ化すると良いです。

 

タスク実行用のVBS作成

登録したタスクを一般ユーザー権限のアカウントで実行するためのVBSを作成します。
バッチでも良いのですがユーザー向けにメッセージを表示させたい時はVBSが適切です。
メモ帳を起動したら以下の内容を張り付けて.vbs形式で任意の場所に保存しましょう。

 

Option Explicit
Dim Ans
Dim objShell
Ans = MsgBox("PC maintenance Start",vbYesNo + vbExclamation,"Info")
if Ans = vbNo Then
  Call MsgBox("PC maintenance Cancel",,"info")
else
  Set objShell = CreateObject("WScript.Shell")
  objShell.Run "C:\Windows\System32\schtasks.exe /run /tn ManualDefrag_%username%",0
  objShell.Run "C:\Windows\System32\schtasks.exe /run /tn ManualDiskClean_%username%",0
end if

 

1の手順同様、組織の管理者はADのファイル配布機能を使ってユーザーのデスクトップに設置すると良いでしょう。
完了までPCの動作が少し重くなるため「休憩前に実行してください」などのメッセージを組み込むと、
よりユーザーライクになると思います。

 

実行結果

vbsを実行するとそれぞれのDOSプロンプト(黒い画面)が表示され進捗状況を確認することができます。
両方のDOSプロンプトが消えたらクリーンアップ完了と思ってください。

 

以下はvbs実行後の結果確認です。
デフラグは「最後の実行」が更新されており、
クリーンアップは6.51GBもあったWindowsUpdateが消えているのがわかります。
f:id:cool-f:20200211221803p:plain
vbs実行後のデフラグ

f:id:cool-f:20200211222812p:plain
vbs実行後のクリーンアップ

 

最後に

今回の記事内容はいわゆる「その場しのぎ」です。
最善策は適正な性能のパソコンを購入することであることをお忘れなく。

もし採用される方は月1回の頻度で実行していただくのが良いと思います。
あまり時間を空けすぎるとクリーンアップ処理の所要時間が増えるのでご注意ください。

 

場所: 日本

0 comments:

コメントを投稿