リモートコンピュータの再起動を行うWScript

このQ&Aのポイント
  • リモートコンピュータを再起動するためのWScriptを作成しています。
  • スクリプトを実行すると、XP(32bit)では正常に動作しますが、windows7(64bit)ではエラーが発生します。
  • windows7での動作しない原因を教えていただきたいです。
回答を見る
  • ベストアンサー

リモートコンピュータの再起動を行うWScript

リモートコンピュータの再起動を行うWScriptを作成しています スクリプトを実行すると、リモート先のマシンがXP(32bit)では実行されるのですが、windows7(64bit)では「書き込みできません:’GetObject’」とエラーが表示されスクリプトを正常に動作させることができませんでした。 windows7で動作しない原因がわかるかたおりましたら、ご教示のほどよろしくお願いいたします。 --------------------------------------------------- ....(省略) for i=0 to arg.count-1 set obj = GetObject("winmgmts:{impersonationLevel=impersonate,(RemoteShutdown)}//host-" & arg(i)) obj.ExecQuery("select * from Win32_OperatingSystem where Primary=true").Reboot() next --------------------------------------------------- ※ソースはここから拾ってきました http://technet.microsoft.com/ja-jp/library/bb742445.aspx#ID0EQFAC

noname#153830
noname#153830

質問者が選んだベストアンサー

  • ベストアンサー
  • momo164
  • ベストアンサー率48% (38/79)
回答No.4

続・・・ これでいけるでしょう・・・いけない場合は他の問題点です。 Option Explicit Dim objShutdown, objOS, objSystem 'シャットダウンオブジェクト Set objShutdown = GetObject("winmgmts:{impersonationLevel = impersonate, (Shutdown)}") 'オペレーティングシステムオブジェクト Set objOS = objShutdown.InstancesOf("Win32_OperatingSystem") ' シャットダウン実行 Reboot2 Shutdown8 For Each objSystem In objOS objSystem.Win32Shutdown 2 Next テキストにでも書いて、拡張子をVBSで保存してください。 タスクからの呼び出しでも、CALLでもなんでもOKはずです。 では・・・

その他の回答 (3)

  • momo164
  • ベストアンサー率48% (38/79)
回答No.3

?? なんかむずかしい・・・こんな手間はいらないような・・・・ Windows7をタスクとか他のプログラムから再起動させたいの? まず手前のトリガーをおしえてください。

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.2

UACが有効になっているからでは? 無効にすれば再起動しませんか?

回答No.1

「管理者として実行」を選んでもだめですか?

noname#153830
質問者

お礼

管理者実行は行えませんでしたが、リモート先にも存在するAdministratorsグループに所属するアカウントを作成して実行してもだめでした。私自身も管理者権限です。 コマンドプロンプトの表示が汚くなりますが、以下の方法で(とりあえず)処理をさせようと思います。 ------------------- ....(省略) for %%i in (%*) do ( set test=%%i WMIC /NODE:"host-!test:~1,3!" /USER:"[username]" /PASSWORD:"[password]" OS WHERE Primary=1 CALL Reboot ) ------------------- ありがとうございました!

noname#153830
質問者

補足

お礼への補足です お礼へ記述したコマンドはbatです。

関連するQ&A

  • エクセルVBAでPCシャットダウン

    ネットを検索してたら、PCをシャットダウンさせるというコード Set objSystemSet = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}").InstancesOf("Win32_OperatingSystem") For Each objSystem In objSystemSet objSystem.Win32Shutdown 1 Next をみつけたので以下のように試してみました。 Sub TEST() Application.OnTime Now + TimeValue("0:05:00"), "PC_ShutDown" End Sub Sub PC_ShutDown() Set objSystemSet = _ GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _ .InstancesOf("Win32_OperatingSystem") For Each objSystem In objSystemSet objSystem.Win32Shutdown 1 Next End Sub ところが実行すると、ログオフし、画面に、「コンピュータの電源を切ることができます」と表示されるのですが、そこでとまってしまいます。 PCの電源ボタンも長押しないときかなくなります。 自動で電源は切れないのでしょうか?

  • VBSについて教えてください。

    VBSについて教えてください。 イベントビューワのプロパティの変更(最大ログサイズとログサイズが最大値に達した時の操作)を以下のスクリプトにて変更したいと思っています。(スクリプトはhttp://www.microsoft.com/japan/technet/scriptcenter/scripts/logs/eventlog/lgevvb16.mspxで公開されているのを利用しています。) strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate,(Security)}!\\" & _ strComputer & "\root\cimv2") Set colLogFiles = objWMIService.ExecQuery _ ("Select * from Win32_NTEventLogFile") For each objLogfile in colLogFiles strLogFileName = objLogfile.Name Set wmiSWbemObject = GetObject _ ("winmgmts:{impersonationLevel=Impersonate}!\\.\root\cimv2:" _ & "Win32_NTEventlogFile.Name='" & strLogFileName & "'") wmiSWbemObject.MaxFileSize = 1024000 wmiSWbemObject.OverwriteOutdated = 0 wmiSWbemObject.Put_ Next WindowsXPSP2では動作したのですが、Windows2000SP4では以下のエラーが発生します。 Windows Script Host スクリプト:スクリプトの場所 行:14 文字:5 エラー:WBEM_FLAG_USE_AMENDED_QUALIFIERSが指定されていない場合は修正オブジェクトを置くことはできません コード:80041066 ソース:SWbemObject VBSについては全く理解できておりません。 Windows2000で動作させるためにんはどこを修正すればいいでしょうか?

  • スクリプト:特権を保有していません

    Const wshYes = 6 Const wshNo = 7 Const wshYesNoDialog = 4 Const wshQuestionMark = 32 Set objShell = CreateObject("Wscript.Shell") intReturn = objShell.Popup("再起動処理キャンセルしますか?(60秒以内)", _ 60, "再起動処理開始", wshYesNoDialog + wshQuestionMark) If intReturn = wshYes Then Wscript.Echo "再起動処理をキャンセルしました" ElseIf intReturn = wshNo Then Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}").ExecQuery("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems ObjOperatingSystem.Win32Shutdown(6) Next Wscript.Echo "再起動処理を実行しています。" Else Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}").ExecQuery("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems ObjOperatingSystem.Win32Shutdown(6) Next Wscript.Echo "タイムアウトです。再起動処理を実行しています。" End If とスクリプトをいただきましたが、特権を保有していません。コード 80041062 が表示されてしまいます。あいにく、ど素人のため特権を付与してあげる方法がわかりません。もしお分かりになるか いらっしゃいましたら、ご教示をお願いいたします。

  • WSHからのコマンドプロンプト実行

    お世話になります。 OS:Windows7 Professional SP1 UAC:既定(上から2番目) 上記の条件で、WSHからコマンドプロンプトを管理者権限で立ち上げ、 ファイルをコピーするスクリプトを作成したいのですが・・・ 当方あまり知識が無く困り果ててる次第でございます。 *************************************************************************** Do while WScript.Arguments.Count = 0 and WScript.Version >= 5.7 Set wmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set os = wmi.ExecQuery("SELECT *FROM Win32_OperatingSystem") For Each value in os if left(value.Version, 3) < 6.0 then exit do Next Set sha = CreateObject("Shell.Application") sha.ShellExecute "cmd.exe", """" & WScript.ScriptFullName & """ uac", "", "runas" WScript.Quit loop *************************************************************************** 以上のコマンドでUsersからでも管理者権限でプロンプトが立ち上がる所までは確認しています。 このあと、プロンプト上で    "Copy D:\A.txt C:\Windows\System32 /y" を自動的に実行してくれるようなスクリプトにしたいのですが、どう記述すればよいのでしょうか? なるべくユーザーに負担をかけない形で、スクリプト一発で処理できたらと考えていますが・・・ ご指導よろしくお願い致します。

  • Windows2003サーバのリソース監視が理解出来なくて・・・・悩んでいます。

    Windows2003サーバのリソース監視の仕方及び知識についておしえてください(いまいち調べてみても理解が進みません・・・) サーバのリソースの監視ですが、簡単に言うとどんな状態になったら危険というか問題があるということになるのでしょうか? コミットチャージが増えるとよくないということを聞いたことがあるのですが・・・ 物理メモリだとか仮想メモリだとか用語の定義も私の中ではいまいちです。 平易に解説いただけると大変うれしいです。 監視する際ずっと見ているわけにもいかないですよね。 AD上にあるサーバーとしてVBScriptなどで自分のPCから見れればいいかなとは思います。 こんなプログラムとかを見つけたのですが・・・うまく使えなかったです。。。 Set OSInfos = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_OperatingSystem") For Each OSInfo In OSInfos Wscript.Echo "コミットチャージ: " & int((OSInfo.SizeStoredInPagingFiles - OSInfo.FreeSpaceInPagingFiles) / 1024) & "MB" Next

  • 任意のプログラムを終了させてからシャットダウンプログラムを走らせるには?

    すいませんが、質問させていただきます。 現在Windows XPにて他のサイトにあった「poweroff.vbs」 --------- Set objSystemSet = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}").InstancesOf("Win32_OperatingSystem") For Each objSystem In objSystemSet objSystem.Win32Shutdown 8 Next) --------- を、使用しタスクで自動シャットダウンをしていますが、 シャットダウンをさせるより先に任意のプログラム(.exe)を終了させてから上記の「poweroff.vbs」を実行するにはどうしたらいいでしょうか? このプログラムに何か記述を追加すれば良いのか、そのほかの方法があるのか、わかりません。ご回答をお願い致します。 因みに私はプログラムに関しては無知なので、わかりやすくお願い致します。

  • 0×80041003 のエラー

    0×80041003のエラーがイベントビュアーに出ていて、検索しましたら http://www.sql-master.net/articles/SQL749.html がヒットしました。 書いてあるように、 strComputer = “.” Set objWMIService = GetObject(“winmgmts:” _ & “{impersonationLevel=impersonate}!\\” _ & strComputer & “\root\subscription”) Set obj1 = objWMIService.Get(“__EventFilter.Name=’BVTFilter’”) set obj2set = obj1.Associators_(“__FilterToConsumerBinding”) set obj3set = obj1.References_(“__FilterToConsumerBinding”) For each obj2 in obj2set WScript.echo “Deleting the object” WScript.echo obj2.GetObjectText_ obj2.Delete_ next For each obj3 in obj3set WScript.echo “Deleting the object” WScript.echo obj3.GetObjectText_ obj3.Delete_ next WScript.echo “Deleting the object” WScript.echo obj1.GetObjectText_ obj1.Delete_ を、新しいテキストドキュメントにページからそのままコピーして貼り付け、ファイルメニューで名前を付けて保存で、[新しい.vbs]と名前を変換して保存、保存した物をクリックすると エラー:文字が正しくありません コード:800A0408 ソース:Microsoft VBScriptコンパイルエラー と出ます、どうすれば良いのでしょうか。

  • vbscriptについて

    vbsのファイルをダブルクリックするとシャットダウン・再起動・ログオフできるプログラムをネットで見つけました。 でも、休止状態にするプログラムがなかったのでどなたか知っていたら教えてください。 ちなみに再起動のプログラムです↓ ------------------------------------------------- Option Explicit Dim objShut ' シャットダウンオブジェクト Dim objOS ' オペレーティングシステムオブジェクト Dim objSystem ' オペレーティングシステムオブジェクト Set objShut = GetObject("winmgmts:{impersonationLevel = impersonate, (Shutdown)}") Set objOS = objShut.InstancesOf("Win32_OperatingSystem") For Each objSystem In objOS objSystem.Win32Shutdown 2 Next --------------------------------------------------

  • VBSからリモートでbat実行(WMI)

    VBS初心者です。 別端末上のbatファイルを別ユーザでリモート実行したいのですが、 以下のソースでエラーが起きてしまいます。(result が2で返ってきてしまう) どなたか原因がお解りになりましたらご教授宜しくお願い致します。 ----------------------------------------------------- RemoteExecute "リモート先","ドメイン\User","pass","C:\test.bat" Function RemoteExecute(strServer, strUser, strPassword, CmdLine) Const Impersonate = 3 RemoteExecute = -1 Set Locator = CreateObject("WbemScripting.SWbemLocator") Set Service = Locator.ConnectServer(strServer, "root\cimv2", strUser, strPassword) Service.Security_.ImpersonationLevel = Impersonate Set Process = Service.Get("Win32_Process") result = Process.Create(CmdLine, , , ProcessId) If (result <> 0) Then WScript.Echo "Creating Remote Process Failed: " & result Wscript.Quit End If RemoteExecute = ProcessId End Function -----------------------------------------------------

  • 時刻の同期について

    ドメインにログオンする際、ログオンしたクライアント端末(WinXP SP1)がDCとの時刻の同期を ログオン時のみおこなう必要があり、 サーバ(Win2003)側でActiveDirectoryのグループポリシーでログオン時にスクリプトを実行する 設定を行い、少し時間をおいてからW32Timeサービスを停止しようと考えています。 そこでWSHで下記のスクリプトをおいたのですが、「サービス停止」のRetValで戻り値が2になってしまい、 サービスが停止しません。 サーバ(Win2003)内で下記のスクリプトを実行すると正常に動作します。 どうかご教授お願いいたします。 またログオン時のみDCとの時刻同期をとりたい場合他に方法があれば教えていただきたいです。 よろしくお願いいたします。 ------------------------------------------------------------------------------------------------------ 'サービス開始 Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='W32Time'") for each Service in ServiceSet RetVal = Service.StartService() if RetVal = 0 then WScript.Echo "Service started" elseif RetVal = 10 then WScript.Echo "Service already running" end if next 'ウエイト Wsh.Sleep 4000 'サービス停止 Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='W32Time'") for each Service in ServiceSet RetVal = Service.StopService() if RetVal = 0 then WScript.Echo "Service stopped" elseif RetVal = 5 then WScript.Echo "Service already stopped" end if next ------------------------------------------------------------------------------------------------------