• 締切済み

時刻の同期について

ドメインにログオンする際、ログオンしたクライアント端末(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 ------------------------------------------------------------------------------------------------------

みんなの回答

回答No.1

1.クライアントのWindows Timeサービスはサービスマネージャーで停止&手動(もしくは無効。試してはいませんけど)にしておく。 2.ログオンスクリプトで次のバッチコマンドを起動させる   net time /domain:%userdomain% /set /y VBSのRCが2なのは権限がないからではないのでしょうか。

関連するQ&A

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

    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 が表示されてしまいます。あいにく、ど素人のため特権を付与してあげる方法がわかりません。もしお分かりになるか いらっしゃいましたら、ご教示をお願いいたします。

  • 下記内容のスクリプトを実行すると、ポップアップが

    下記内容のスクリプトを実行すると、ポップアップが 5回表示されるのですが、どこから取ってきた値なのか知りたいです。 ※必要なのは4回目に表示されるデスクトッププロパティから  参照できる”スクリーンセーバーの待ち時間”だけです。  出来れば、それのみ表示させたいです。 ****************** On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_Desktop") For Each objItem in colItems Wscript.Echo "ScreenSaverTimeout: " & objItem.ScreenSaverTimeout Next ****************** 以上

  • 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" を自動的に実行してくれるようなスクリプトにしたいのですが、どう記述すればよいのでしょうか? なるべくユーザーに負担をかけない形で、スクリプト一発で処理できたらと考えていますが・・・ ご指導よろしくお願い致します。

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

    WSHについて教えてください。 コレクションの最初の要素(オブジェクト)のプロパティを参照したいのですが、やり方がわかりません。 例えば以下のようなWMIのクエリの結果のコレクションの要素(オブジェクト)は1つだけしかありません。 ※ネットワークドライブ V: の情報を得る strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkConnection where LocalName=""V:""",,48) なのにわざわざ For Each objItem in colItems Wscript.Echo "LocalName: " & objItem.LocalName Next のような表現をするのは、いかにも大変です。 For Eachを使わずに、上記の例での colItems の最初の要素(オブジェクト)の LocalName プロパティを取り出すには どのようにコーディングすればいいのでしょうか?

  • WMIによるネットワーク接続の有効無効化方法

    WMIによるネットワーク接続の有効無効化方法がわからないため 下記VBScriptの「Array("192.168.9.999")」の部分のIPアドレスを 有効化のVBScriptには割り当てているアドレスを 無効化のVBScriptにはでたらめなアドレスを設定し 有効無効化らしきことを実現させています。 実際にはネットワーク接続は有効のままでネットワークアドレスが ちがうために接続できないだけです。 どなたか有効無効化(IPEnabledをTRUEorFALSEにするMethod)方法を 教えていただけないでしょうか? strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery _ ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") strIPAddress = Array("192.168.9.999") strSubnetMask = Array("255.255.255.0") For Each objNetAdapter in colNetAdapters errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask) If errEnable = 0 Then WScript.Echo "The IP address has been changed." Else WScript.Echo "The IP address could not be changed." End If Next

  • リモートコンピュータの再起動を行う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

  • VBSでフォルダ、ファイル作成時のエラーコード

    フォルダ、ファイルが存在しないとき、作成するスクリプトをVBSで作成していますが、疑問点があるのでご教示ください。 objFSO.CreateFolder、objFSO.CreateTextFileを実行が、正常に行われた場合、 Err.Numberに0がセットされると思っていましたが、実際は違っていました。 objFSO.CreateFolderでフォルダが作成される場合、Err.Numberに13が返されます。 objFSO.CreateTextFileでファイルが作成される場合、Err.Numberに438が返されます。 このスクリプトを実行後、フォルダ、ファイルが存在しない場合、作成されることも確認しています。 フォルダ作成後、作成されたフォルダに対して、ファイルの作成/データの書き込みのアクセス権を拒否にすると返されるErr.numberに70がセットされることも確認しています。 なぜ、フォルダ、ファイルが作成された場合、0が返されないのかご存知の方がいらっしゃいましたらご教示ください。 また、その情報が記載されている書籍およびサイトがあれば、お教えいただければ、幸いです。 Option Explicit Dim objFSO Dim objFile Const strFolderName = "C:\VBS" Const strFileName = "C:\VBS\test.txt" On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then WScript.Echo "FSOオブジェクトを作成しました" Else WScript.Echo "FSOオブジェクトを作成できませんでした" WScript.Quit(1) End If If objFSO.FolderExists(strFolderName) Then WScript.Echo "フォルダが見つかりました" Else WScript.Echo "フォルダが見つかりませんでした" If objFSO.CreateFolder(strFolderName) Then If Err.Number = 13 Then WScript.Echo "フォルダを作成しました" Else WScript.Echo "フォルダを作成できませんでした" WScript.Quit(1) End If End If End If If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else Script.Echo "ファイルが見つかりませんでした" If objFSO.CreateTextFile(strFileName) Then If Err.number = 438 Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If End If

  • vbsのif文で複数条件の判定

    例えば以下である場合、 WScript.echo AAA WScript.echo BBB vbsを実行すると "?"が表示されます。 "OK"が表示されない原因として考えられる事はありますでしょうか If AAA = false Then If BBB = false Then WScript.echo "OK" else WScript.echo "NG" End If else WScript.echo "?" End If

  • サーバのメモリ使用量とかを確認したい

    strComputer = "atl-dc-01" Set wbemServices = GetObject("winmgmts:\\" & strComputer) Set wbemObjectSet = wbemServices.InstancesOf("Win32_LogicalMemoryConfiguration") For Each wbemObject In wbemObjectSet WScript.Echo "物理メモリの合計 (kb): " & wbemObject.TotalPhysicalMemory Next こういったプログラムを見つけたのですが・・・Getobjectで書き込みが出来ないエラーが出ます。 調べた結果おそらく権限がないことがいけないかと思いますが・・・どうやって結果を得られるのかわかりません。 あとコミットチャージとかも取得で切ればいいのですが・・・よろしくお願いします。

  • WSH/VBScript DHCPの有効設定について

    お世話になっております。 毎度お手数をお掛けしていますが、よろしくお願いいたします。 WSHにてDHCPの有効設定を行ったところ、 WindowsVistaで以下の通り実行すると DHCPは有効になりますが、Staticで設定していたデフォルトゲートウェイのアドレスが残ってしまいます。 WindowsXPで実行するとデフォルトゲートウェイのアドレスは削除されます。 デフォルトゲートウェイの値を削除する方法をお願いいたします。 '----------------------------------- strComputer = "." Set objWMIService = GetObject _ ("winmgmts:\\"" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery(_ "SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled = 'True'" For Each objItem in colItems if objItem.EnableDHCP = False then Return = objItem.EnableDHCP end if Next '----------------------------------- 上記に以下を追加してみましたが正常に動作しませんでした。 arrGateways = Array(Null) objItem.SetGateways(arrGateways) 以上、よろしくお願いいたします。