前回の記事でリンクを貼ってたページに載ってる、
オフラインで wsusscn2.cab を使って Windows Update(Microsoft Update)を
スキャン実行する用の Windows スクリプトが、
きしょく悪い?!?!(←www)BASICなヤツ
、 ・・・ なもんですから、
汗
(※個人的趣味的感想です。m(_ _)m )
とりま、もちっとマトモ?!?!な「JScript スクリプト」で書き換えといて、・・。
△▼△▼▽▲▽▲△▼△▼▽▲▽▲△▼△▼▽▲▽▲△▼△▼▽▲▽▲
// Windows Update Scan, using 'Wsusscn2.CAB'.
// WSH Windows Script JScript.
// 2021.06.25 v1.00
//
var strVer="1.00";
var DEBUG=true;
var strCAB="wsusscn2.cab"; // WU スキャン用CAB。
var strJSE="wuscn2.jse"; // JScript スクリプト(このファイル)。
// 作成するHTMLのパーツ部品!? ^_^;)ゝ
汗。
var strHDR="WUscn2_HDR.HTM";
var strBDY="WUscn2_BDY.HTM";
var strFTR="WUscn2_FTR.HTM";
var strSCN="WUscn2_Rs.html";
// Windows スクリプト用のオブジェクト?!。
var oWsh=new ActiveXObject("WScript.Shell");
var oWfs=new ActiveXObject("Scripting.FileSystemObject");
// ファイルの存在確認をします。
function fnExist(strF, strP){
if(! oWfs.FileExists(strP+"\\"+strF)){
oWsh.Popup( "ファイルがありません!: " + strF + "\n" + strP + "\\" + strF + "\n" , 0, "エラーです!", 0+16 );
oWsh=oWfs=null;
WScript.Quit(3);
}
if(DEBUG){
WScript.Echo("あります。:\n" + strP + "\\" + strF + "\n");
}
return 0;
}
// カレントディレクトリ取得&ファイル存在確認.
var strDir=oWsh.CurrentDirectory;
fnExist(strCAB, strDir); // wsusscn2.cab は在りますか?
fnExist(strJSE, strDir); // wuscn2.jse は在りますか?(←www
)
fnExist(strHDR, strDir);
fnExist(strFTR, strDir);
fnExist(strBDY, strDir); // 部品は全部ソロってますか?
// 日付時刻(おまけ!?です)。
var dt=new Date();
// Microsoft.Update の ServiceManager.
var oMsUpdSsn=new ActiveXObject("Microsoft.Update.Session");
var oMsUpdMgr=new ActiveXObject("Microsoft.Update.ServiceManager");
// MS Update アップデート検索器.
var strPathCAB=strDir+"\\"+strCAB;
var oUpdSrv=oMsUpdMgr.AddScanPackageService("Offline Sync Service", strPathCAB);
var oUpdSchr=oMsUpdSsn.CreateUpdateSearcher();
WScript.Echo("準備しました: WinUpd アップデート検索器〔スクリプトバージョン"+strVer+"〕\nWsusscn2.CAB ファイル: "+strPathCAB+"\n\nアップデートを検索スキャンしています。。。\n");
oUpdSchr.ServerSelection=3; // 3 なのだそうです。。。
oUpdSchr.ServiceID=oUpdSrv.ServiceID; // ID写し。
// var oSrchRs=oUpdSchr.Search("IsInstalled=0"); // コメントアウト。
// 未適用と隠し?!をさがせ!
var oSrchRs=oUpdSchr.Search("IsInstalled=0 and IsHidden=0");
// こんなふう↓に、一つづつプロパティを変数に入れるんだ。。。
var oUpdates=oSrchRs.Updates; // アップデート集合体。
if(oUpdates.Count == 0){
WScript.Echo("該当するアップデートはありません。\n\n終了します。");
oWsh=oWfs=oUpdSrv=oUpdSchr=null; // これでオブジェクト free するらしい。
WScript.Quit();
}
var strRs1="該当アップデートのリスト: "+ strPathCAB+" による。\n\n";
var strRs2="全部で "+(oUpdates.Count)+" 個のアップデートがあります。";
if( DEBUG ){WScript.Echo(strRs2+"\n");}
var oUpd=null; // アップデートのオブジェクト?!
var strLstTt=""; // タイトル・リスト。
var strKB=""; // KB番号(コメントから正規表現で抽出するのだ!←簡単
)。
var strLnk=""; // ハイパーリンクを作っとく(元々の WinUpd のように)。
var str="";
for(var i=0; i<oUpdates.Count; i++){
oUpd=oUpdates.Item(i); // アップデートオブジェクト一つづつ。
strKB=(oUpd.Title).match(/KB[0-9]+/)[0]; // これでKB番号文字列を取得。
// DEBUG モードでは、詳細をポップアップ。
if(DEBUG){WScript.Echo(
strKB + " : ("+oUpd.MaxDownloadSize+" バイト)\n"+
"Title: "+oUpd.Title+"\n"+
"〔重大さ〕: "+oUpd.MSRCSeverity+" , "+
"〔最終更新日付〕: "+oUpd.LastDeploymentChangeTime+
"\n\n"+
"〔説明〕: "+oUpd.Description+"\n"
);}
strLstTt=strLstTt+(i+1)+">"+strKB+" :\n"+oUpd.Title+"\n\n"; // リスト。
strLnk=strLnk+(i+1)+"〕<a href='https://www.catalog.update.microsoft.com/Search.aspx?q="+strKB+"' target='_blank' title='Microsoft Update カタログで開きます。'>"+strKB+"<\/a> <br>"+(oUpd.Title)+"<br><br>\r\n";
}
// ポップアップ表示。
oWsh.Popup(strRs1+strLstTt+strRs2, 0, "アップデート〔タイトル〕リスト", 0+64);
if( DEBUG ){oWsh.Popup(strLnk, 0, "DEBUG: リンクアンカーのリスト", 0+64);}
// ハイパーテキスト・ファイル作成。改行はMSDOS(\r\n) ※ちょとダサいかも?!
var oFileW=oFileR=null; // 書きこ用と読みこ用。
var strBDYCPY=strBDY+"_CPY.HTM";
// Body部分のテンプレをコピとく。
oWfs.CopyFile("./"+strBDY, "./"+strBDYCPY, true);
// リストを出しとく。
oFileW=oWfs.OpenTextFile("./"+strBDYCPY, 8, true, -1); // 追加モード。
oFileW.WriteLine("WU オフラインスキャン.CAB ファイル: '" + strPathCAB + "'<br>\r\n");
oFileW.WriteLine(strRs2+"<br>\r\n"); // 全部でxx個のアップデ・・。
oFileW.WriteLine("実行日時: "+dt+"<br><br>\r\n");
oFileW.Write(strLnk);
oFileW.Close();
// 結果用HTMLを作成。HEAD用コピ。
oWfs.CopyFile("./"+strHDR, "./"+strSCN, true);
oFileR=oWfs.OpenTextFile("./"+strHDR, 1, true, -1);
oFileW=oWfs.OpenTextFile("./"+strSCN, 2, true, -1);
// 結果出力まるっぽ読み込み。→全部追加書き込み。
str=oFileR.ReadAll();
oFileR.Close();
oFileW.Write(str);
oFileW.Close();
oFileR=oWfs.OpenTextFile("./"+strBDYCPY, 1, true, -1);
oFileW=oWfs.OpenTextFile("./"+strSCN, 8, true, -1);
str=oFileR.ReadAll();
oFileR.Close();
oFileW.Write(str);
oFileR=oWfs.OpenTextFile("./"+strFTR, 1, true, -1);
str=oFileR.ReadAll();
oFileR.Close();
oFileW.Write(str);
oFileW.Close();
// ブラウザでHTMLを開きます。
oWsh.Run("cmd.exe /C start .\\"+strSCN+" \n", 1, false);
// おしまい。
oWsh=oWfs=oUpdSrv=oUpdSchr=null;
WScript.Quit();
△▼△▼▽▲▽▲△▼△▼▽▲▽▲△▼△▼▽▲▽▲△▼△▼▽▲▽▲
全部おんなじフォルダに置いて、JScript 実行します。
ウインドウズのコマンドプロンプトから、
D:\Work> WScript .\wuscn2.jse
て、ヤッてもエエですけど、・・。
どうせ!やから、?! ・・ダブルクリック一発のヤツをこっさえときま。。。
[リンク先:] C:\WINDOWS\system32\cmd.exe /C WScript .\wuscn2.jse
[作業フォルダ:] D:\Work
[実行時の大きさ:] 最小化
[コメント:] WSH スクリプト JScript で、 wsusscn2.cab を使った Windows Update スキャンを行ないます。
・・・という内容の CMD ショートカットアイコンをつくって、
〔アイコンの変更〕から、"shell32.dll, 46" にすると、
Windows Update アイコンになるのだよ。
フッフッ・・・(←ww
ase)
![スキャン実行JSEアイコン画像 スキャン実行JSEアイコン画像](https://stat.ameba.jp/user_images/20210626/19/2katteniyucch1/1c/24/j/o0070007314963311571.jpg?caw=800)
・・・ あっ、と。。。
もちろん、wsusscn2.cab ファイルも忘れずに!
(←あたりまえ!!
)。
デジ署名を確認しときましょう!←これ大切!!![目](https://stat.ameba.jp/blog/ucs/img/char/char2/242.gif)
![wsusscn2.cabファイルのデジ署名を確認](https://stat.ameba.jp/user_images/20210626/20/2katteniyucch1/97/a7/j/o0474045814963348175.jpg?caw=800)
XPの場合は、これ
かな!?
かなり時間がかかりますけど、。。。
汗
汗
とある(更新を怠ってる)Windows XP パソコンで実行してみたら、・・
11個も出てきました。
汗汗
![WUスキャン結果その01](https://stat.ameba.jp/user_images/20210626/20/2katteniyucch1/a2/ce/j/o0504012414963355098.jpg?caw=800)
![WUスキャン結果その02](https://stat.ameba.jp/user_images/20210626/21/2katteniyucch1/95/0f/j/o0505012414963357994.jpg?caw=800)
DEBUG モードにしてたら、
一つひとつのアップデートの詳細がポップアップされます。(・・以下、省略
)
(DEBUG モードじゃなけりゃ、一つひとつは開きませんよ。
汗)
全部リストは別に出ます。![目](https://stat.ameba.jp/blog/ucs/img/char/char2/242.gif)
![WUスキャン結果ALL](https://stat.ameba.jp/user_images/20210626/21/2katteniyucch1/95/e7/j/o0500051414963361437.jpg?caw=800)
スキャン結果はHTMLに書き出されて、最後に開きます。![えっ](https://stat.ameba.jp/blog/ucs/img/char/char2/147.gif)
![WUスキャン結果HTML画像](https://stat.ameba.jp/user_images/20210626/21/2katteniyucch1/cc/f4/j/o0578051014963365781.jpg?caw=800)
KB番号
がリンクになってます。MS Update カタログに飛べる
んで、
即!、「更新プログラム」をダウンロド
できます。![ニコニコ](https://stat.ameba.jp/blog/ucs/img/char/char2/139.gif)
![音譜](https://stat.ameba.jp/blog/ucs/img/char/char2/038.gif)
オフラインで wsusscn2.cab を使って Windows Update(Microsoft Update)を
スキャン実行する用の Windows スクリプトが、
きしょく悪い?!?!(←www)BASICなヤツ
![ガーン](https://stat.ameba.jp/blog/ucs/img/char/char2/141.gif)
![汗](https://stat.ameba.jp/blog/ucs/img/char/char2/028.gif)
(※個人的趣味的感想です。m(_ _)m )
とりま、もちっとマトモ?!?!な「JScript スクリプト」で書き換えといて、・・。
△▼△▼▽▲▽▲△▼△▼▽▲▽▲△▼△▼▽▲▽▲△▼△▼▽▲▽▲
// Windows Update Scan, using 'Wsusscn2.CAB'.
// WSH Windows Script JScript.
// 2021.06.25 v1.00
//
var strVer="1.00";
var DEBUG=true;
var strCAB="wsusscn2.cab"; // WU スキャン用CAB。
var strJSE="wuscn2.jse"; // JScript スクリプト(このファイル)。
// 作成するHTMLのパーツ部品!? ^_^;)ゝ
![あせる](https://stat.ameba.jp/blog/ucs/img/char/char2/029.gif)
var strHDR="WUscn2_HDR.HTM";
var strBDY="WUscn2_BDY.HTM";
var strFTR="WUscn2_FTR.HTM";
var strSCN="WUscn2_Rs.html";
// Windows スクリプト用のオブジェクト?!。
var oWsh=new ActiveXObject("WScript.Shell");
var oWfs=new ActiveXObject("Scripting.FileSystemObject");
// ファイルの存在確認をします。
function fnExist(strF, strP){
if(! oWfs.FileExists(strP+"\\"+strF)){
oWsh.Popup( "ファイルがありません!: " + strF + "\n" + strP + "\\" + strF + "\n" , 0, "エラーです!", 0+16 );
oWsh=oWfs=null;
WScript.Quit(3);
}
if(DEBUG){
WScript.Echo("あります。:\n" + strP + "\\" + strF + "\n");
}
return 0;
}
// カレントディレクトリ取得&ファイル存在確認.
var strDir=oWsh.CurrentDirectory;
fnExist(strCAB, strDir); // wsusscn2.cab は在りますか?
fnExist(strJSE, strDir); // wuscn2.jse は在りますか?(←www
![汗](https://stat.ameba.jp/blog/ucs/img/char/char2/028.gif)
fnExist(strHDR, strDir);
fnExist(strFTR, strDir);
fnExist(strBDY, strDir); // 部品は全部ソロってますか?
// 日付時刻(おまけ!?です)。
var dt=new Date();
// Microsoft.Update の ServiceManager.
var oMsUpdSsn=new ActiveXObject("Microsoft.Update.Session");
var oMsUpdMgr=new ActiveXObject("Microsoft.Update.ServiceManager");
// MS Update アップデート検索器.
var strPathCAB=strDir+"\\"+strCAB;
var oUpdSrv=oMsUpdMgr.AddScanPackageService("Offline Sync Service", strPathCAB);
var oUpdSchr=oMsUpdSsn.CreateUpdateSearcher();
WScript.Echo("準備しました: WinUpd アップデート検索器〔スクリプトバージョン"+strVer+"〕\nWsusscn2.CAB ファイル: "+strPathCAB+"\n\nアップデートを検索スキャンしています。。。\n");
oUpdSchr.ServerSelection=3; // 3 なのだそうです。。。
oUpdSchr.ServiceID=oUpdSrv.ServiceID; // ID写し。
// var oSrchRs=oUpdSchr.Search("IsInstalled=0"); // コメントアウト。
// 未適用と隠し?!をさがせ!
var oSrchRs=oUpdSchr.Search("IsInstalled=0 and IsHidden=0");
// こんなふう↓に、一つづつプロパティを変数に入れるんだ。。。
var oUpdates=oSrchRs.Updates; // アップデート集合体。
if(oUpdates.Count == 0){
WScript.Echo("該当するアップデートはありません。\n\n終了します。");
oWsh=oWfs=oUpdSrv=oUpdSchr=null; // これでオブジェクト free するらしい。
WScript.Quit();
}
var strRs1="該当アップデートのリスト: "+ strPathCAB+" による。\n\n";
var strRs2="全部で "+(oUpdates.Count)+" 個のアップデートがあります。";
if( DEBUG ){WScript.Echo(strRs2+"\n");}
var oUpd=null; // アップデートのオブジェクト?!
var strLstTt=""; // タイトル・リスト。
var strKB=""; // KB番号(コメントから正規表現で抽出するのだ!←簡単
![ニコニコ](https://stat.ameba.jp/blog/ucs/img/char/char2/139.gif)
var strLnk=""; // ハイパーリンクを作っとく(元々の WinUpd のように)。
var str="";
for(var i=0; i<oUpdates.Count; i++){
oUpd=oUpdates.Item(i); // アップデートオブジェクト一つづつ。
strKB=(oUpd.Title).match(/KB[0-9]+/)[0]; // これでKB番号文字列を取得。
// DEBUG モードでは、詳細をポップアップ。
if(DEBUG){WScript.Echo(
strKB + " : ("+oUpd.MaxDownloadSize+" バイト)\n"+
"Title: "+oUpd.Title+"\n"+
"〔重大さ〕: "+oUpd.MSRCSeverity+" , "+
"〔最終更新日付〕: "+oUpd.LastDeploymentChangeTime+
"\n\n"+
"〔説明〕: "+oUpd.Description+"\n"
);}
strLstTt=strLstTt+(i+1)+">"+strKB+" :\n"+oUpd.Title+"\n\n"; // リスト。
strLnk=strLnk+(i+1)+"〕<a href='https://www.catalog.update.microsoft.com/Search.aspx?q="+strKB+"' target='_blank' title='Microsoft Update カタログで開きます。'>"+strKB+"<\/a> <br>"+(oUpd.Title)+"<br><br>\r\n";
}
// ポップアップ表示。
oWsh.Popup(strRs1+strLstTt+strRs2, 0, "アップデート〔タイトル〕リスト", 0+64);
if( DEBUG ){oWsh.Popup(strLnk, 0, "DEBUG: リンクアンカーのリスト", 0+64);}
// ハイパーテキスト・ファイル作成。改行はMSDOS(\r\n) ※ちょとダサいかも?!
var oFileW=oFileR=null; // 書きこ用と読みこ用。
var strBDYCPY=strBDY+"_CPY.HTM";
// Body部分のテンプレをコピとく。
oWfs.CopyFile("./"+strBDY, "./"+strBDYCPY, true);
// リストを出しとく。
oFileW=oWfs.OpenTextFile("./"+strBDYCPY, 8, true, -1); // 追加モード。
oFileW.WriteLine("WU オフラインスキャン.CAB ファイル: '" + strPathCAB + "'<br>\r\n");
oFileW.WriteLine(strRs2+"<br>\r\n"); // 全部でxx個のアップデ・・。
oFileW.WriteLine("実行日時: "+dt+"<br><br>\r\n");
oFileW.Write(strLnk);
oFileW.Close();
// 結果用HTMLを作成。HEAD用コピ。
oWfs.CopyFile("./"+strHDR, "./"+strSCN, true);
oFileR=oWfs.OpenTextFile("./"+strHDR, 1, true, -1);
oFileW=oWfs.OpenTextFile("./"+strSCN, 2, true, -1);
// 結果出力まるっぽ読み込み。→全部追加書き込み。
str=oFileR.ReadAll();
oFileR.Close();
oFileW.Write(str);
oFileW.Close();
oFileR=oWfs.OpenTextFile("./"+strBDYCPY, 1, true, -1);
oFileW=oWfs.OpenTextFile("./"+strSCN, 8, true, -1);
str=oFileR.ReadAll();
oFileR.Close();
oFileW.Write(str);
oFileR=oWfs.OpenTextFile("./"+strFTR, 1, true, -1);
str=oFileR.ReadAll();
oFileR.Close();
oFileW.Write(str);
oFileW.Close();
// ブラウザでHTMLを開きます。
oWsh.Run("cmd.exe /C start .\\"+strSCN+" \n", 1, false);
// おしまい。
oWsh=oWfs=oUpdSrv=oUpdSchr=null;
WScript.Quit();
全部おんなじフォルダに置いて、JScript 実行します。
ウインドウズのコマンドプロンプトから、
D:\Work> WScript .\wuscn2.jse
て、ヤッてもエエですけど、・・。
どうせ!やから、?! ・・ダブルクリック一発のヤツをこっさえときま。。。
[リンク先:] C:\WINDOWS\system32\cmd.exe /C WScript .\wuscn2.jse
[作業フォルダ:] D:\Work
[実行時の大きさ:] 最小化
[コメント:] WSH スクリプト JScript で、 wsusscn2.cab を使った Windows Update スキャンを行ないます。
・・・という内容の CMD ショートカットアイコンをつくって、
〔アイコンの変更〕から、"shell32.dll, 46" にすると、
Windows Update アイコンになるのだよ。
![にひひ](https://stat.ameba.jp/blog/ucs/img/char/char2/193.gif)
![汗](https://stat.ameba.jp/blog/ucs/img/char/char2/028.gif)
![スキャン実行JSEアイコン画像 スキャン実行JSEアイコン画像](https://stat.ameba.jp/user_images/20210626/19/2katteniyucch1/1c/24/j/o0070007314963311571.jpg?caw=800)
・・・ あっ、と。。。
もちろん、wsusscn2.cab ファイルも忘れずに!
![音譜](https://stat.ameba.jp/blog/ucs/img/char/char2/038.gif)
![むかっ](https://stat.ameba.jp/blog/ucs/img/char/char2/034.gif)
デジ署名を確認しときましょう!←これ大切!!
![目](https://stat.ameba.jp/blog/ucs/img/char/char2/242.gif)
![wsusscn2.cabファイルのデジ署名を確認](https://stat.ameba.jp/user_images/20210626/20/2katteniyucch1/97/a7/j/o0474045814963348175.jpg?caw=800)
XPの場合は、これ
![左矢印](https://stat.ameba.jp/blog/ucs/img/char/char2/285.gif)
かなり時間がかかりますけど、。。。
![あせる](https://stat.ameba.jp/blog/ucs/img/char/char2/029.gif)
![あせる](https://stat.ameba.jp/blog/ucs/img/char/char2/029.gif)
とある(更新を怠ってる)Windows XP パソコンで実行してみたら、・・
![WUスキャン結果その00](https://stat.ameba.jp/user_images/20210626/20/2katteniyucch1/60/49/j/o0214009414963350334.jpg?caw=800)
11個も出てきました。
![あせる](https://stat.ameba.jp/blog/ucs/img/char/char2/029.gif)
![WUスキャン結果その01](https://stat.ameba.jp/user_images/20210626/20/2katteniyucch1/a2/ce/j/o0504012414963355098.jpg?caw=800)
![WUスキャン結果その02](https://stat.ameba.jp/user_images/20210626/21/2katteniyucch1/95/0f/j/o0505012414963357994.jpg?caw=800)
DEBUG モードにしてたら、
一つひとつのアップデートの詳細がポップアップされます。(・・以下、省略
![汗](https://stat.ameba.jp/blog/ucs/img/char/char2/028.gif)
(DEBUG モードじゃなけりゃ、一つひとつは開きませんよ。
![あせる](https://stat.ameba.jp/blog/ucs/img/char/char2/029.gif)
全部リストは別に出ます。
![目](https://stat.ameba.jp/blog/ucs/img/char/char2/242.gif)
![WUスキャン結果ALL](https://stat.ameba.jp/user_images/20210626/21/2katteniyucch1/95/e7/j/o0500051414963361437.jpg?caw=800)
スキャン結果はHTMLに書き出されて、最後に開きます。
![えっ](https://stat.ameba.jp/blog/ucs/img/char/char2/147.gif)
![WUスキャン結果HTML画像](https://stat.ameba.jp/user_images/20210626/21/2katteniyucch1/cc/f4/j/o0578051014963365781.jpg?caw=800)
KB番号
![メモ](https://stat.ameba.jp/blog/ucs/img/char/char2/131.gif)
![右上矢印](https://stat.ameba.jp/blog/ucs/img/char/char2/235.gif)
![MSUpdateカタログへリンク](https://stat.ameba.jp/user_images/20210626/21/2katteniyucch1/6a/9e/j/o0563015014963374026.jpg?caw=800)
即!、「更新プログラム」をダウンロド
![右下矢印](https://stat.ameba.jp/blog/ucs/img/char/char2/243.gif)
![ニコニコ](https://stat.ameba.jp/blog/ucs/img/char/char2/139.gif)
![音譜](https://stat.ameba.jp/blog/ucs/img/char/char2/038.gif)