달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2009. 1. 21. 16:10

SCOM 2007 자료 SystemCenter2009. 1. 21. 16:10

Management Group summary and licensing information tool
관리 그룹 및 관리 계정에 대한 정보 확인
Usage:
MGInfo /L   ->  RMS에서 실행 시
MGInfo /S <RMSName> <domain\user>  ->  원격 RMS에 연결 시 (Microsoft.EnterpriseManagement.OperationsManager.Common.dll, Microsoft.EnterpriseManagement.OperationsManager.dll 필요)



Effective Configuration Viewer for Operations Manager 2007
관리 대상 서버가 받고 있는 정책에 대한 정보 확인 (적용받는 규칙, 모니터 등)
Usage:
1. GUI
2. Command Line
=> effectiveconfigurationviewer <RMS> <Agent> c:\AgentInfo.xml


Powershell Script - GetContainingGroups.PS1
관리 대상 서버가 속하는 그룹 정보를 출력하는 스크립트
Usage:
GetContainingGroups.ps1 -computerFQDN:'<ManagedServer>'


Powershell Script - GetContainingGroups.PS1
Seal 되어 있는 관리팩(.MP)를 Unseal 하는 스크립트
Usage:
MpToXml.ps1 -mpFilePath:'C:\Microsoft.Exchange.Server.2003.Monitoring.mp' -outputDirectory:'C:\'


Override Explorer
Class 별 또는 Computer 별로 재정의 값 확인


Override Creator
다수의 컴퓨터에 대해 Disable하는 Override 작업 시 사용


Proxy Settings
다수의 에이전트에 대해 Agent Proxy 설정 시 사용



Management Pack Authoring Console
http://download.microsoft.com/download/f/4/3/f438d6a0-290c-42b8-8f9c-c6660f89e1aa/OpsMgr07_x64_AuthConsole.exe
http://download.microsoft.com/download/f/4/3/f438d6a0-290c-42b8-8f9c-c6660f89e1aa/OpsMgr07_x86_AuthConsole.exe

 

:
Posted by 커널64

Netstat -an | findstr "ESTABLISHED"해서 ESTABLISHED 세션 수 성능 수집

Rule > New > Probe based > Script(performance)

Object, Counter, Instance 적당한 값
Value: $Data/Property[@Name='ESTABLISHED Count']$

---------------------------------------------------------------------------------------------------------------

ESTABLISHED.vbs


Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile (".\ESTABLISHED.BAT", 8, True)

objTextFile.WriteLine("netstat -an -p tcp | findstr ESTABLISHED")
objTextFile.Close
Set objTextFile  = nothing

Set shellobj=WScript.CreateObject("WScript.Shell")
Set execObj=shellobj.Exec(".\ESTABLISHED.BAT")
OutData=execObj.StdOut.ReadAll()
val=execObj.StdOut.Line - 3

Set aFile = objFSO.GetFile(".\ESTABLISHED.BAT")
aFile.Delete
Set aFile = nothing
Set execObj = nothing

Call oBag.AddValue("ESTABLISHED Count",val)
Call oAPI.Return(oBag)

:
Posted by 커널64

Monitor -> New -> Scripting -> Timed Script Two State Monitor

Parameters
[Port Number] [Port Number] [Port Number] ....

State Expression
For Unhealthy Expression Property[@Name='State'] Equals Good
For Healthy Expresion Property[@Name='State'] Equals Bad

Alert Description
$Data/Context/Property[@Name='Message']$

---------------------------------------------------------------------------------------------------------------

Check.Port.vbs

Dim oAPI, oBag, PortNumber(), strReturn(), strMessage
strMessage = ""

Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Set oArgs = WScript.Arguments

ParamCount = oArgs.Count
State = 0

If ParamCount < 1 Then
Call oAPI.LogScriptEvent("Check.Port.vbs", 5009, 0, "Script aborted. Not enough parameters provided.")
WScript.Quit -1
End If

ReDim Preserve PortNumber(ParamCount), States(ParamCount), strReturn(ParamCount)

set shellobj=WScript.CreateObject("WScript.Shell")
i = 0
Do While i <> ParamCount
PortNumber(i) = oArgs(i)
val = 0

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile (".\RUNNETSTAT.BAT", 8, True)

objTextFile.WriteLine("netstat -an -p tcp | findstr LISTENING | findstr /C:" & chr(34) &  ":"  & PortNumber(i)) & " " & chr(34)
objTextFile.Close
set objTextFile  = nothing

set execObj=shellobj.Exec(".\RUNNETSTAT.BAT")
OutData=execObj.StdOut.ReadAll()
val=execObj.StdOut.Line - 3

If val => 1 Then
strReturn(i) = "LISTENING"
Call oBag.AddValue("Port " & PortNumber(i),strReturn(i))
Else
strReturn(i) = "NOT LISTENING"
Call oBag.AddValue("Port " & PortNumber(i),strReturn(i))
State = 1
End If

strMessage = strMessage & "Port " & PortNumber(i) & ": " & strReturn(i) & " | "

Set aFile = objFSO.GetFile(".\RUNNETSTAT.BAT")
aFile.Delete
Set aFile = nothing
Set execObj = nothing
i = i + 1
Loop

set shellobj=nothing

If State = 0 Then
Call oBag.AddValue("State","Good")
Else
Call oBag.AddValue("State","Bad")
End If

Call oBag.AddValue("Message", strMessage)
Call oAPI.Return(oBag)

:
Posted by 커널64
2008. 12. 20. 01:17

스크립트(WMI)를 이용해 프로세스 실행 Etc.2008. 12. 20. 01:17

set process = GetObject("winmgmts:{impersonationLevel=impersonate}!Win32_Process")
result = process.Create ("notepad.exe",null,null,processid)
:
Posted by 커널64
2008. 12. 20. 01:16

WMI 관련 툴 Etc.2008. 12. 20. 01:16

WMI CIM Studio


Scriptomatic Version 2.0

:
Posted by 커널64

특정 폴더(Parameter 1)의 파일 수가 일정 수(Parameter 2)를 넘지 않는지에 대한 모니터

Monitor -> New -> Scripting -> Timed Script Two State Monitor

Parameter
"
<Folder Name>" <Number Of Files>

사용자 삽입 이미지













State Expression

For Unhealthy Expression Property[@Name='State'] Equals BAD
For Healthy Expresion Property[@Name='State'] Equals GOOD

------------------------------------------------------------

Check.Folder.vbs

On Error Resume Next

Dim oAPI, oBag, objFSO, objFldr

Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreateTypedPropertyBag(StateDataType)
Set oArgs = WScript.Arguments

MessageText = ""

If oArgs.Count < 1 Then
Call oAPI.LogScriptEvent("Check.Folder.vbs", 500, 0, "Script aborted. Not enough parameters provided.")
WScript.Quit -1
End If

strFldr = oArgs(0)
NumberOfFiles = int(oArgs(1))
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objFldr=objFSO.GetFolder(strFldr)

If objFldr.Files.Count > NumberOfFiles Then
strReturn = "Number of Files in " & strFldr& " is greater than " & NumberOfFiles
                Call oBag.AddValue("State","BAD")
                Call oBag.AddValue("ret",strReturn)
Else
                Call oBag.AddValue("State","GOOD")
End If
Call oAPI.Return(oBag) 

:
Posted by 커널64
2008. 11. 29. 09:08

프로세스 모니터 (개수 - 최소/최대) SystemCenter2008. 11. 29. 09:08

Monitor -> New -> Scripting -> Timed Script Two State Monitor

Parameters
[Process1.exe] [Lower value] [Upper value] [Process2.exe] [Lower value] [Upper value] ....

State Expression
For Unhealthy Expression Property[@Name='State'] Equals Good
For Healthy Expresion Property[@Name='State'] Equals Bad

Alert Description
$Data/Context/Property[@Name='Message']$

---------------------------------------------------------------------------------

ProcessCheck.vbs

Dim oAPI, oBag, oArgs, strProcess(), Lower(), Upper(), colProcess()
strMessage = " "

Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Set oArgs = WScript.Arguments

ParamCount = oArgs.Count
State = 0

If ParamCount < 3 Then
Call oAPI.LogScriptEvent("ProcessCheck.vbs", 5009, 0, "Script aborted. Not enough parameters provided.")
WScript.Quit -1
End If

If (ParamCount Mod 3) <> 0 Then
Call oAPI.LogScriptEvent("ProcessCheck.vbs", 5010, 0, "Script aborted. The number of provided parameters is invalid.")
WScript.Quit -1
End If

ReDim Preserve strProcess(ParamCount), Lower(ParamCount), Upper(ParamCount), colProcess(ParamCount)

i = 0
Do While i <> ParamCount
strProcess(i) = oArgs(i)
Lower(i) = cInt(oArgs(i + 1))
Upper(i) = cInt(oArgs(i + 2))

If Lower(i) > Upper(i) Then
Call oAPI.LogScriptEvent("ProcessCheck.vbs", 5011, 0, "'" & strProcess(i) & " " & Lower(i) & " " & Upper(i) & "'" & " Lower value is bigger than upper value.")
WScript.Quit -1
End If

i = i + 3
Loop

i = 0
Do While i <> ParamCount
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcess(i) = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = '" & strProcess(i) & "'")

If colProcess(i).Count => Lower(i) and colProcess(i).Count =< Upper(i) Then
Call oBag.Addvalue(strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ")" ,colProcess(i).Count & "ea (Normal)")
strMessage = strMessage & strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ") : " & colProcess(i).Count & "ea (Normal)" & " | "
End If

If colProcess(i).Count < Lower(i) Then
Call oBag.Addvalue(strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ")" ,colProcess(i).Count & "ea (Too few)")
strMessage = strMessage & strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ") : " & colProcess(i).Count & "ea (Too few)" & " | "
State = 1
End If

If colProcess(i).Count > Upper(i) Then
Call oBag.Addvalue(strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ")" ,colProcess(i).Count & "ea (Too many)")
strMessage = strMessage & strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ") : " & colProcess(i).Count & "ea (Too many)" & " | "
State = 1
End If

Set objWMIService = nothing
i = i + 3
Loop

If State = 0 Then
Call oBag.AddValue("State","Good")
Else
Call oBag.AddValue("State","Bad")
End If

Call oBag.AddValue("Message",strMessage)
Call oAPI.Return(oBag)

:
Posted by 커널64