URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

VBScriptでWindowsサービスの再起動

 体調崩して金曜日に休んでしまったのが週明けに響きそうで恐いです…。

 で、これも基本のおさらいですが、お仕事で使うのでサクッと作りました。
 この他にサービスでないプログラム起動とか、監視系のスクリプトも作らないといけないみたいです。

 VBSでサービスの状態確認とか起動・停止をするときは「Shell.IsServiceRunningメソッド」とか「Shell.ServiceStartメソッド」とかが使えますが、個人的にはWMIを使う方が色々と応用が利きそうなので好きです(その分ちょっと冗長になりますが)。


VBScriptでPort Ping

 リモートサーバのTCPポートを監視するというのを、何故かVBSでやらなければならなくなりました。例によって古いサーバ上で動かすからなんですが…。もっと別の方へ話を持って行けなかった自分の説得力不足もあるので仕方ないか。

 いろいろと手段を考えていましたが、

  1. 「CreateObject("NonComSck.Winsock")」を使う方法はVB6ランタイムの"MSWINSCK.OCX"がないと使えない(当然のように入っているわけなかった)
  2. 「WMIで"Select * from netDiagnostics"」を使う方法は、実行環境がWindows XPでないと使えない(Windows Server 2003とかでは使えない)

という感じだったので、行き着いたところは「とりあえず強引にHTTPで接続しにいってエラーコードで判別する」でした。

 そんなこんなで以下のようにしてみました。


バッチファイルで外部設定ファイルを読み込む

 よくある件ではありますが、お仕事で相談を受けたのでメモ。

 やり方としては"SET ~"文だけを切り出す方法もありますが、個人的には"FOR ~"文を使う方が好みです。こちらの方が外部ファイルが純粋な設定っぽく見えるので。


ドメインユーザーのパスワード更新日を一覧に出力

 よくある要望だとは思いますが、ADから全ユーザーを引っ張ってきてパスワードをちゃんと更新しているか確認したりとかに使います。
 ついでに、管理ユーザーとかパスワード無期限にしているユーザーも判るようにしろとのこと。
 とりあえずパッと思いついた内容と、手元のパーツを継ぎ接ぎしてして作りました。


「SyntaxHighlighter」をここでも使えるようにしてみた

 MercurialとPygmentsでスクリプト等を見やすくすることができましたが、今さらながらここでも同じようなことをしてみました。
 元々はここで使用している「a-blog cms」の機能をそのまま使っていましたが、VBScript等のWindows系のコードを相性が悪いので、別のものを使用します。
 とりあえず必須だった機能は、

  • 自分がよく使う言語に対応(Bash、Perl、VBS、PowerShell、XML、他)
  • 行番号が表示される
  • "pre"タグ以外で使えること("pre"だとa-blog cmsのテンプレートに干渉するため)

くらいです。

 実現する方法も、JavaScriptを利用したものや、コードをHTML変換して貼り付けるタイプ等があるみたいですが、定番でネットでの情報が多い「SyntaxHighlighter」を使うことにしました(後で気まぐれに他のに変えることもあるかもしれませんが)。