SQLの窓 イラストAC フリー素材

2013年12月28日

指定サービスを一括で停止するスクリプト



*************************************************************
* 【list.vbs】
* 現在実行中のサービスの一覧より、停止対象を決定する為の
* テキストファイル( target.txt ) を作成する
*
* 【stop.vbs】
* target.txt で指定したサービスを停止する
*************************************************************

1) list.vbs をエクスプローラから実行して下さい

2) target.txt の中から停止したいサービス名の先頭のセミコロン
   を削除して下さい

3) stop.vbs をエクスプローラから実行して下さい



※ 再度 list.vbs を実行すると、target.txt に無いサービスを
   発見した場合は、リストの最後に追加します

※ サービスの依存関係は、上に依存元のサービスを持ってきて下さい。

※ 最初の作成では、全ての実行中のサービスリストが作成されますが、
   先頭にセミコロンが入ったままでは、stop.vbs を実行しても何も
   停止されません。


■著作権その他

このプログラムはフリーです。どうぞ自由に御使用ください。
著作権は作者である私が保有しています。
また、本ソフトを運用した結果については、作者は一切責任を
負えせんのでご了承ください。

lightbox
stop_service_started.vbs
' 管理者として実行を強制する
Set obj = Wscript.CreateObject("Shell.Application")
if Wscript.Arguments.Count = 0 then
	obj.ShellExecute "cscript.exe", WScript.ScriptFullName & " runas", "", "runas", 1
	Wscript.Quit
end if

str = WScript.FullName
str = Right( str, 11 )
str = Ucase( str )
if str <> "CSCRIPT.EXE" then
	strMessage = "エクスプローラから実行する場合は、stop.vbs を使用して下さい"
	WScript.Echo strMessage
	WScript.Quit
end if

Set Fso = Wscript.CreateObject( "Scripting.FileSystemObject" )

strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurDir = obj.Path

strServer = "."

on error resume next
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
if Err.Number <> 0 then
	Wscript.Echo Err.Description
	Wscript.Quit
end if

Set objWmi = objLocator.ConnectServer( _
	strServer, _
	"root\cimv2", _
	strUser, _
	strPass )
if Err.Number <> 0 then
	Wscript.Echo Err.Description
	Wscript.Quit
end if

objWmi.Security_.ImpersonationLevel = 3
if Err.Number <> 0 then
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

Set InObj = Fso.OpenTextFile( strCurDir & "\target.txt", 1 )
aTarget = Split( InObj.ReadAll(), vbCrLf )
InObj.Close()

For I = 0 to UBound( aTarget ) 

	if Trim( aTarget( I ) ) <> "" and Left( aTarget( I ), 1 ) <> ";" then

		strQuery = "select * from Win32_Service where Name = '" & aTarget(I) &  "'"
		Set objTarget = objWmi.ExecQuery( strQuery )

		on error resume next
		For Each obj in objTarget

			if obj.Started then
				obj.StopService()
				Wscript.Echo obj.Name & " を停止させました"
			end if

		Next
		on error goto 0

		' 終了待ち
		nCnt = 0
		Do while true
			Wscript.Sleep 1000

			Set objTarget = objWmi.ExecQuery( strQuery )
			For Each obj in objTarget 
				strResult = obj.State
			Next 

			if strResult = "Stopped" then
				Exit Do
			end if

			nCnt = nCnt + 1
			if nCnt > 60 then
				Exit Do
			end if

		Loop

	end if

Next



【VBScriptの最新記事】
posted by at 2013-12-28 12:45 | VBScript | このブログの読者になる | 更新情報をチェックする