URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

選択されているタグ : VBScript

タグを絞り込む : ActiveDirectory Windows Zabbix

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で接続しにいってエラーコードで判別する」でした。

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


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

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


Windows Server 2003環境でドメインユーザーのパスワードを無期限にする

 Windows Server 2003のサポート終了まであと一年くらいですが、まだまだ随所で使われていると思います。
 そんなわけでWindows Server 2003のActive Directoryとかをいじる機会もそれなりにあります。むしろ、これから移行案件が活発になれば頻度は高くなるかもですね。

 Active Directory環境でドメインユーザーのパスワードを無期限にするには、ユーザーのプロパティから該当の項目にチェックを入れるだけですが、これを一括で全ユーザーにやろうとするとスクリプトとかでやらないと非常に面倒です。(サードパーティの管理ツールならGUIでできるのかもしれませんが。)
 ADの管理については、最近のWindowsだとPowerShellでいろいろできると思いますが、今回はWindows Server 2003がターゲットということで当然のようにPowerShellはインストールされていません。
 そのため、このへんを参考にds~コマンドを使います。


Windowsの既定のプリンタをスクリプトで変更

 ちょっとログオンスクリプトで「通常使うプリンター」を変更する必要があったのでメモです。
 最近は、こういった設定はActive Directory(グループポリシー)頼みになりつつなってしまっていましたが、スクリプトでやった方がいろいろと応用が利くとは思います。
 例によってVBSで作成しました。