シャットダウンスクリプトの記述
ドメインに参加している WinXP クライアントから、ワークグループ環境の複数台の Windows Server 2003 (主に) に対して ping を実行し、ping に対して応答があった場合はシャットダウンするスクリプトを記述したいと考えています。
# ワークグループ環境の Windows Server 2003 は検証環境で、社内セキュリティポリシーの運用上ドメインに参加できません。
この場合、
1. 複数のマシンに ping を打つ
2. 1 で応答がかえってくれば管理者の資格情報を使用してログイン
3. シャットダウンを実行
という流れになると思います。
そして、最終的には 1 が成功した場合に If 構文で 2、および、3 を実行する、という
ように書けば一連の処理は成功すると考えています。
現在上記 1~3 の処理で細分化し、それぞれについて動作確認をとっています。
しかし、2、および、3 を実行してもうまくいかないため、これらについて伺いたく
質問させていただきます。
2 について
以下の構文を組んでいますが、vbs を実行すると、後述のエラーダイアログが表示されます
(対象 PC やアカウント名などはダミーとご認識ください)。
別の資格情報 (接続先マシンの管理者アカウント) を指定して接続できるコードをご教授ください。
-----
Const WbemAuthenticationLevelPktPrivacy = 6
strComputer = "atl-ws-01"
strNamespace = "root\cimv2"
strUser = "Administrator"
strPassword = "4rTGh2#1"
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer (strComputer, strNamespace, strUser, strPassword)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy
Set colItems = objWMIService.ExecQuery ("Select * From Win32_OperatingSystem")
For Each objItem in ColItems
Wscript.Echo strComputer & ": " & objItem.Caption
Next
-----
エラー : RPC サーバーを利用できません。
コード : 800706BA
ソース : SWbemLocator
3 について
以下の構文を組んでいますが、エラーは表示されないものの、シャットダウンが開始されません。
-----
On error resume Next
Const LogOff = 0 'ログオフ
Const REBOOT = 2 '再起動
Const SHUTDOWN = 8 'シャットダウン
Dim objWMIService
Dim colOperatingSystems
Dim objOperatingSystem
Set objWMIService = GetObject("winmgmts:{impersonationLevel= impersonate,(Shutdown)}\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Win32Shutdown(SHUTDOWN)
Next
Set objWMIService = Nothing
Set colOperatingSystems = Nothing
Call ErrorCheck
End Function
-----
また、試しに objNetwork.MapNetworkDrive を使用してサーバーの IPC$ に接続しログインした後に上記処理を試行しましたが、
シャットダウンが進みませんでした。
何卒よろしくお願いいたします。
補足
スレッドのとおりに拡張子をjsにして保存しました。 そこまではよかったんですけど、できたファイルをダブルクリックしてみてもなにも始まりません。 どうすればいいですか?