Management

SMS를 사용한 고급 클라이언트 인벤토리

Wes Dobry

 

한 눈에 보기:

  • SMS 2003 하드웨어 인벤토리 에이전트 사용
  • MIF 파일을 사용하여 인벤토리 확장
  • 동적 MOF 파일과 정적 MOF 파일

이 기사의 코드 다운로드: DobrySMSInventory2007_04.exe (152KB)

관리자라면 많은 시간을 들여야 수집할 수 있는 정보를 상관에게 제출해야 하는 경우가 있게 마련입니다. 그런데 이와 같은 경우에 미리 대비해 두었다고 가정해 봅시다.

즉, 데이터를 사전에 수집해 두었다면 상관에게 정보를 즉시 제공할 수 있으므로 불필요하게 시스템 작동을 중단하거나 야근을 할 필요가 없게 됩니다. 또한 회사에 많은 비용 절감 효과도 가져다 줌으로써 능력 있는 관리자로 인정받게 될 것입니다.

Microsoft® Systems Management Server(SMS) 2003은 기본적으로 많은 정보를 수집하지만 모든 정보를 수집하지는 않습니다. 예를 들어 SMS 2003은 기본적으로 로컬 그룹 및 로컬 그룹의 구성원 또는 로컬 사용자와 사용자의 특성에 대해서는 보고하지 않습니다. 이러한 정보가 없다면 엔지니어가 작업 중인 각 시스템의 로컬 관리자 그룹에 Domain Users, 또는 한술 더 떠 Everyone을 넣을 경우 문제가 될 수 있습니다. 또는 회사의 바이러스 백신 솔루션이나 스파이웨어 방지 솔루션에 있는 로컬 파일 및 폴더 제외 목록이 어떤 것인지를 알 수 없게 될 수도 있습니다. 이러한 문제가 대수롭지 않게 보일 수도 있지만, 사용자가 제외 목록에 c:\*.*를 입력하고 있는 것을 IT 부서의 누군가가 발견하게 된다면 상황은 달라질 것입니다.

스크립팅, Windows® Management Instrumentation(WMI) 및 SMS에 관한 지식을 적절하게 조합하여 활용하면 SMS 인벤토리를 확장하여 거의 모든 정보를 포함할 수 있는데, 이 작업은 MIF(Management Information Format) 및 MOF(Management Object Format) 파일을 통해 이루어집니다.

인벤토리 사용

SMS를 사용하면 조직은 상황에 맞게 배포를 수행하고 대상을 모니터링하고 배포된 시스템을 유지 관리할 수 있습니다. 더 나아가 SMS 인벤토리를 확장하여 상황에 맞게 보다 더 세밀하게 대상을 만들어 관리할 수도 있습니다. 예를 들어 사용자가 수정한 정책이 있는 시스템에 보안 정책을 배포하여 회사의 로컬 보안 정책을 적용할 수 있으며, 승인되지 않은 로컬 사용자 계정을 비활성화하거나 관계없는 로컬 관리자를 제거할 수도 있습니다.

물론 조직에서는 클라이언트 시스템에 대한 자세한 정보를 제때에 얻기 위해 SMS을 사용하기도 합니다. 인벤토리를 확장하면 원하는 정보로만 채워진 보고서를 만들 수 있는데, 기본 인벤토리에만 의존해서는 이러한 정보를 곧바로 얻을 수 없습니다. 정보를 세분화하여 볼 수도 있습니다. 예를 들어 특정 서버 팜을 가리키는 특정 레지스트리 키가 있는 시스템의 수가 포함된 보고서를 만들 수 있습니다. 이를 통해 관리자는 특정 시간에 각 팜을 가리키는 클라이언트의 수를 대략적으로 평가할 수 있으며, 보안 팀에서는 네트워크에서 스파이웨어로 알려진 특정 프로세스를 실행하고 있는 시스템이 어떤 것인지를 확인할 수 있습니다.

MIF 및 MOF 파일은 약간의 변환만 거치면 거의 모든 소스의 정보를 입력할 수 있다는 점에서 매우 유용합니다. 텍스트를 기반으로 하는 모든 정보는 MOF 파일을 통해 조작하여 WMI로 가져오거나 MIF 파일 형식으로 수집하여 다음 하드웨어 인벤토리 사이클에 전송할 수 있습니다. 인벤토리 확장을 구현하려면 VBScript 또는 JScript®에 관한 지식과 더불어 수집해야 할 정보가 무엇인지에 대해서도 정확하게 이해하고 있어야 합니다. SMS로 거의 모든 정보를 수집할 수 있다는 점을 감안한다면 WMI에서 고급 SQL에 이르기까지 매우 방대한 지식이 필요할 수도 있습니다. 물론 수집한 데이터에 대해 보고를 하려면 SQL에 관한 지식이 필요하므로 수집하려는 정보의 종류에 관계없이 SQL에 대해서는 이해하고 있어야 합니다.

인벤토리 작동 방식

SMS에는 하드웨어 인벤토리와 소프트웨어 인벤토리라는 두 가지 유형의 인벤토리 프로세스가 있습니다. 소프트웨어 인벤토리에는 파일의 위치, 파일 버전, 파일 크기 및 기타 파일 특성 등 파일에 관한 정보만 포함되지만 소프트웨어 인벤토리 프로세스를 사용하여 파일을 수집하고 사이트 서버에 저장할 수도 있습니다.

하드웨어 인벤토리는 시스템에 대한 가장 큰 정보 배열을 포함하므로 쉽게 확장할 수 있습니다. 하드웨어 인벤토리의 정보는 주로 WMI, 레지스트리 및 시스템 BIOS에서 가져옵니다.

하드웨어 인벤토리는 예약된 일정에 따라 수집되는데, 이러한 일정은 SMS 2003의 하드웨어 인벤토리 에이전트의 사이트 설정을 통해 지정합니다. 정보 수집 빈도는 1분에 한 번에서 몇 달에 한 번에 이르기까지 다양한 간격으로 설정할 수 있습니다 일반적으로 관리하기에 용이한 가장 빠른 빈도로 정보를 수집하되, 이러한 정보 수집 빈도가 네트워크, 사이트 서버, 관리 지점 또는 클라이언트에 부담을 주지 않는 선에서 적절한 균형점을 찾는 것이 좋습니다.

하드웨어 인벤토리 에이전트를 처음 설치하면 sms_def.mof 파일이 컴파일됩니다. 이 파일에는 SMS에서 초기에 수집하는 모든 정보가 포함됩니다. 이 파일이 컴파일되고 나면 하드웨어 인벤토리 에이전트에 필요한 모든 SMS 네임스페이스 및 관련 클래스가 WMI에 만들어지며 이들 중 대부분은 \\.\root\CIMv2\SMS 네임스페이스에 있습니다. 설치 후 하드웨어 인벤토리 에이전트는 이러한 클래스의 대부분을 검토하여 관리 지점과 사이트 데이터베이스로 전송될 정보를 구성합니다.

MIF 파일

하드웨어 인벤토리 에이전트는 WMI 클래스에서 정보를 가져올 뿐만 아니라 NOIDMIF 및 IDMIF 모음 폴더에서도 MIF 파일을 찾습니다. 이들 폴더에서 찾은 MIF 파일은 처리되어 다음 하드웨어 인벤토리로 보내집니다.

MIF 파일을 사용하면 SMS 하드웨어 인벤토리를 가장 쉽게 확장할 수 있습니다. MIF 파일에는 NOIDMIF와 IDMIF의 두 종류가 있습니다. 이 두 파일은 XML과 비슷한 형태의 정적 파일로서, 사용자가 SMS 데이터베이스에 넣고자 하는 거의 모든 정보를 포함할 수 있습니다. 이 파일은 일반 텍스트 파일을 만드는 방법으로 만들 수 있으므로 대부분의 스크립팅 언어를 사용하여 만들거나 직접 만들 수 있습니다.

일반적으로 MIF 파일은 레지스트리나 WMI에 정보가 포함되어 있지 않거나 정보를 수동으로 입력해야 할 경우에 사용합니다. 예를 들어 하드웨어 배포 팀에서 새로운 시스템을 배포하는 경우에 이러한 파일을 만들 수 있습니다. 배포 엔지니어가 시스템에서 HTML 응용 프로그램을 찾아 자산 관리 데이터베이스를 업데이트하는 데 사용할 모든 자산 정보를 입력할 수 있습니다. 정보가 입력되면 HTML 응용 프로그램에서 동적으로 NOIDMIF 파일을 만들고, 엔지니어는 이 파일을 NOIDMIF 파일 모음 폴더로 다운로드할 수 있습니다. 이 NOIDMIF 파일은 배포 엔지니어가 입력한 모든 정보를 포함할 수 있으며 SMS 데이터베이스에 통합됩니다.

NOIDMIF와 IDMIF 파일에는 약간의 차이만 있습니다. IDMIF 파일은 아키텍처 정보와 고유 ID를 제공하는 고유 헤더를 포함하며, 시스템이 아닌 장치를 고유 엔터티로 SMS에 통합하는 데 사용할 수 있습니다. 예를 들어 스크립트를 사용하여 실제로는 프린터인 시스템을 SMS에 만들고 이에 대한 정보를 SMS 데이터베이스에 쓸 수 있습니다.

NOIDMIF와 IDMIF 파일은 레지스트리 키에 지정된 표준 위치에 저장되며, SMS 에이전트가 기본 위치에 설치된 경우에는 일반적으로 %SYSTEMROOT%\system32\ccm\Inventory\NOIDMIF와 %SYSTEMROOT%\system32\ccm\Inventory\IDMIF에 있습니다. 에이전트가 사용자 지정 위치에 설치된 경우에는 이 두 MIF 디렉터리는 %CCMAGENTINSTALLDIR%\Inventory\NOIDMIF와 %CCMAGENTINSTALLDIR%\Inventory\IDMIF에 있습니다. 두 디렉터리의 위치를 확실하게 알 수 없는 경우에는 다음 레지스트리 키를 통해 확인할 수 있습니다.

HKEY_LOCAL_MACHINE\Software\Microsoft\SMS\
Client\Configuration\Client Properties\NOIDMIF Directory

HKEY_LOCAL_MACHINE\Software\Microsoft\SMS\
Client\Configuration\Client Properties\IDMIF Directory

MIF 파일의 형식은 수집되는 정보에 관계없이 항상 같습니다. 그림 1의 MIF 파일을 보면 파일이 여러 개의 그룹과 각 그룹에 단일 특성이 포함된 단일 구성 요소로 이루어져 있음을 알 수 있습니다. 그룹 또는 특성 항목이 하나만 필요한 경우에도 모든 섹션이 필요합니다. MIF 파일의 각 그룹은 하드웨어 인벤토리에서 명명된 섹션 데이터의 한 행으로, 그리고 그룹의 모든 특성은 해당 행의 한 열로 볼 수 있습니다.

Figure 1 LocalAdmins.mif

Start Component
  Name = “WORKSTATION”
    Start Group
        Name = “Local Admins”
        ID = 1
        Class = “Microsoft|LocalAdminsMIF|1.0”
        Start Attribute
            Name = “Account”
            ID = 1
            ACCESS = READ-ONLY
            Storage = Specific
            Type = String(100)
            Value = “Win32_UserAccount.Domain=’Contoso’,Name=’Domain Admins’”
        End Attribute
    End Group
    Start Group
        Name = “Local Admins”
        ID = 2
        Class = “Microsoft|LocalAdminsMIF”
        Start Attribute
            Name = “Account”
            ID = 1
            ACCESS = READ-ONLY
            Storage = Specific
            Type = String(100)
            Value = “Win32_UserAccount.Domain=’Contoso’,Name=’Technicians’”
        End Attribute
    End Group
    Start Group
        Name = “Local Admins”
        ID = 3
        Class = “Microsoft|LocalAdminsMIF”
        Start Attribute
            Name = “Account”
            ID = 1
            ACCESS = READ-ONLY
            Storage = Specific
            Type = String(100)
            Value = “Win32_UserAccount.Domain=’Example-PC’,Name=’Administrator’”
        End Attribute
    End Group
    Start Group
        Name = “Local Admins”
        ID = 4
        Class = “Microsoft|LocalAdminsMIF”
        Start Attribute
            Name = “Account”
            ID = 1
            ACCESS = READ-ONLY
            Storage = Specific
            Type = String(100)
            Value = “Win32_UserAccount.Domain=’Example-PC’,Name=’RandomUser’”
        End Attribute
    End Group
End Component

그림 2의 LocalAdmin.vbs 샘플은 상당히 간단한 VBScript입니다. 이 스크립트는 NOIDMIF 디렉토리를 조회하여 임시 MIF 파일이 있으면 이를 삭제하고 임시 MIF 파일을 새로 만든 다음 수집된 정보를 간단한 WMI 쿼리를 통해 임시 파일에 반복해서 씁니다. 그런 다음 NOIDMIF 모음 폴더에 있는 MIF 파일을 삭제하고 마지막으로 임시 NOIDMIF를 NOIDMIF 모음 폴더로 이동합니다.

Figure 2 LocalAdmin.vbs

On Error Resume Next

Const ForAppending = 8

Set objWshShell = CreateObject(“WScript.Shell”)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)

strTempDir = objWshShell.ExpandEnvironmentStrings(“%TEMP%”)
strWinDir = objWshShell.ExpandEnvironmentStrings(“%WINDIR%”)
strComputerName = objWshShell.ExpandEnvironmentStrings(“%COMPUTERNAME%”)
strNoIDMifRegLocation = “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Client\Configuration\Client “ _
   & “Properties\NOIDMIF Directory”
strNoIDMifDirectory = objWshShell.RegRead(strNoIDMifRegLocation)
strMifFileName = “\LocalAdmins.mif”
strClassID = “Microsoft|LocalAdminsMIF|1.0”

If objFSO.FileExists(strTempDir & strMifFile) Then
   objFSO.DeleteFile(strTempDir & strMifFile)
End If

Set objMifFile = objFSO.OpenTextFile(strTempDir & strMifFileName, ForAppending, True)

objMifFile.Writeline “Start Component”
objMifFile.Writeline “ Name = “ & Chr(34) & “WORKSTATION” & Chr(34)

strWBEMQuery = “SELECT partcomponent FROM win32_groupuser WHERE groupcomponent = “ & Chr(34) _
   & “\\\\” & strComputerName & “\\root\\cimv2:Win32_Group.Domain=\” & Chr(34) & strComputerName _
   & “\” & Chr(34) & “,Name=\” & Chr(34) & “Administrators\” & Chr(34) & Chr(34)

Set objWBEM = CreateObject(“WbemScripting.SWbemLocator”)
Set objWBEMServer = objWBEM.ConnectServer(, “root\cimv2”)
Set colResults = objWBEMServer.ExecQuery(strWBEMQuery)

i = 1
For Each objItem in colResults
         objMifFile.Writeline “ Start Group”
         objMifFile.Writeline “ Name = “ & Chr(34) & “Local Admins” & Chr(34)
         objMifFile.Writeline “ ID = “ & i
         objMifFile.Writeline “ Class = “ & Chr(34) & strClassID & Chr(34)
         objMifFile.Writeline “ Start Attribute”
         objMifFile.Writeline “ Name = “ & Chr(34) & “Account” & Chr(34)
         objMifFile.Writeline “ ID = 1”
         objMifFile.Writeline “ ACCESS = READ-ONLY”
         objMifFile.Writeline “ Storage = Specific”
         objMifFile.Writeline “ Type = String(100)”
         strUserName = objItem.PartComponent
         strUserName = mid(strUserName, instr(1, strUserName, chr(58)) + 1)
         If Instr(1, strUserName, Chr(92), 1) > 0 Then 
                  strUserName = Replace(strUserName, Chr(92), Chr(92) & Chr(92), 1, -1, 1)
         End If
         If Instr(1, strUserName, Chr(34), 1) > 0 Then
                  strUserName = Replace(strUserName, Chr(34), Chr(39), 1, -1, 1)
         End If

         objMifFile.Writeline “ Value = “ & Chr(34) & strUserName & Chr(34)
         objMifFile.Writeline “ End Attribute”
         objMifFile.Writeline “ End Group”
         i = i + 1
Next

objMifFile.Writeline “End Component”
objMifFile.Close

If objFSO.FileExists(strNoIDMifDir & strMifFileName) Then
   objFSO.DeleteFile(strNoIDMifDir & strMifFileName)
End If

objFSO.MoveFile strTempDir & strMifFileName, strNoIDMifDir & strMifFileName

MIF 파일이 SMS 하드웨어 인벤토리를 확장할 수 있는 쉬운 방법을 제공하기는 하지만 이 파일을 사용할 때 고려해야 할 몇 가지 문제도 있습니다. MIF는 모든 하드웨어 인벤토리 사이클에서 처리됩니다. 그러나 이들 파일은 만들어지고 수집되고 분석된 다음 최종적으로 인벤토리에 저장되므로 MIF에 포함된 정보가 하드웨어 인벤토리에 나타나는 시간이 사이클 1회에 해당하는 시간만큼 지연될 수 있습니다. 즉, 회사의 하드웨어 인벤토리 사이클 간격이 1일인 경우 해당 사이트 데이터베이스의 데이터가 인벤토리에 나타날 때까지 최대 이틀이 걸릴 수 있습니다. 따라서 MIF 파일을 만드는 프로그램을 보급할 시기와 하드웨어 인벤토리 사이클을 실행할 시기를 주의 깊게 고려해야 합니다.

Contoso라는 회사의 인벤토리 사이클 간격이 1일이고 사이클이 자정에 실행된다고 가정해 보겠습니다. 월요일 오전 1시에 VBScript가 실행되어 rootkit 스캐너의 출력이 포함된 NOIDMIF 파일을 만듭니다. 이 출력은 자정에 수집되어 관리 지점에 보고됩니다. Contoso의 SMS 관리자는 수요일 밤 10시 정도에 이 정보를 보고 정보가 45시간이나 지난 정보라는 사실을 알게 됩니다. 이는 SMS 관리자가 NOIDMIF 파일을 만드는 데 사용되는 프로그램을 보급하는 시기를 고려하지 않았기 때문에 발생한 결과입니다.

MOF 파일

MOF 파일은 MIF 파일보다 복잡하지만, WMI에 직접 정보를 입력하고 하드웨어 인벤토리 에이전트의 표준 데이터 수집 프로세스의 일부가 된다는 점에서 MIF 파일보다 우수합니다. 따라서 정보를 수집하기 위해 VBscript를 반복해서 보급할 필요가 없으므로 시간과 노력을 절약할 수 있습니다. 컴퓨터마다 MOF를 한 번씩 보급한 다음 컴파일할 수 있습니다.

MOF 파일은 하드웨어 인벤토리의 나머지 정보와 마찬가지로 정보를 최신 상태로 유지한다는 점에서도 MIF 파일보다 우수합니다. 하드웨어 인벤토리 에이전트에서 사이클을 실행할 때마다 MOF 파일에 있는 클래스와 공급자가 쿼리되어 해당 정보가 빠르게 반환됩니다. 빠른 시간 내에 정보를 봐야 할 경우에는 MOF 파일과 VBScript가 포함된 패키지를 실행하여 하드웨어 인벤토리를 시작할 수 있습니다. 그러면 보급된 프로그램의 정책 사이클 1회 내에 필요한 정보를 얻을 수 있습니다.

MOF 파일에는 기존 WMI 클래스 및 네임스페이스용, 기존 WMI 공급자가 있는 추가 클래스용, 그리고 WMI 공급자가 없는 추가 클래스용의 세 종류가 있습니다.

MOF 파일에는 두 부분이 포함됩니다. 첫 번째 부분은 네임스페이스 정의 섹션으로 여기에서는 WMI 공급자 정보를 확인할 수 있습니다. 두 번째 섹션에는 SMS 보고 특성이 포함됩니다. 이 섹션은 앞에서 언급한 WMI 클래스에 포함된 정보를 찾아서 처리할 위치를 하드웨어 인벤토리 에이전트에 알려 줍니다. MOF 파일은 WMI를 직접 다루므로 MOF 파일을 사용할 계획이라면 시간을 내서 Microsoft SDK(Software Development Kit)를 살펴보는 것이 좋습니다. 자세한 내용은 go.microsoft.com/fwlink/?LinkID=83121을 참조하십시오.

앞에서 분류한 각 MOF 파일은 정적 파일이거나 동적 파일입니다. 예를 들어 회사의 빌드 절차에서 시스템을 빌드한 사람, 사용된 서버의 빌드, 초기 빌드 버전, 컴퓨터가 빌드된 날짜 등에 관한 정보가 포함된 MOF 파일을 컴파일한 경우 MOF 파일은 정적입니다. 이러한 정보는 업데이트할 필요가 없으므로 직접 MOF 파일에 입력하고 mofcomp.exe를 사용하여 WMI에 컴파일할 수 있습니다. 이 작업이 이루어진 후에는 사이트 서버의 sms_def.mof 파일에 그룹 및 클래스 정보를 추가하여 하드웨어 인벤토리 에이전트의 검색 영역을 확장해야 합니다.

동적 MOF 파일은 수집된 정보를 WMI에 직접 쓰는 대신 WMI 공급자를 통해 데이터를 수집한다는 점을 제외하고는 정적 MOF 파일과 비슷합니다. WMI 공급자는 응용 프로그램 또는 서비스에서 WMI에 정보를 직접 입력할 수 있게 해 주는 플러그 인입니다. 이 공급자를 사용하면 레지스트리, 파일 위치, 설치 관리자 정보 같은 WMI 및 시스템의 다른 영역에 동적으로 액세스할 수 있습니다.

MOF 파일로 작업하는 경우에 WMI에 이미 있는 정보를 인벤토리 카탈로그에 더 많이 포함하면 하드웨어 인벤토리를 가장 쉽게 확장할 수 있습니다. 이는 sms_def.mof를 확장하거나 현재 비활성화되어 있는 추가 보고 클래스를 활성화하여 수행할 수 있습니다. sms_def.mof 파일은 \\siteserver\SMS_<sitecode>\inboxes\clifiles.src\hinv 폴더에 있습니다. 이렇게 하면 회사의 모든 장치가 다음 컴퓨터 정책 사이클에서 새로운 sms_def.mof를 가져와 정보를 수집하고 보고하기 시작합니다.

작업 난이도 측면에서 두 번째로 쉬운 방법은 기존 WMI 공급자를 사용하되 새 클래스를 만드는 것입니다. 그림 3에서는 이 방법의 예를 보여 줍니다. 이 예제에서는 기본 제공되는 레지스트리 공급자를 통해 로컬 장치의 HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper를 쿼리하는 동적 속성을 사용하여 CU_Desktop 클래스가 만들어집니다. 클라이언트에서 이 MOF 파일이 컴파일되고 나면 SMS_Def_Extension.mof(그림 4 참조)를 sms_def.mof에 추가해야 합니다. 이 파일에는 SMS가 장치에 대해 보고할지 여부, 그룹 이름, 클래스 ID, 하드웨어 인벤토리 에이전트가 보고할 정보를 찾기 위해 WMI에서 검토할 클래스 및 실제 값 등의 정보가 포함됩니다.

Figure 4 SMS_Def_Extentions.mof

#pragma namespace ("\\\\.\\root\\CIMv2\\sms")
 [ SMS_Report    (TRUE),
  SMS_Group_Name ("Current User Desktop"),
  SMS_Class_ID   ("MICROSOFT|CU_Desktop|1.0") ]
class Power_Mgmt : SMS_Class_Template
{
    [SMS_Report(TRUE),key]
        string  index;
    [SMS_Report(TRUE)]
    sint32   CurrentUserDesktop;
};

Figure 3 CurrentUserDesktop.mof

#pragma namespace(“\\\\.\\root\\CIMv2”)
// Registry property provider
instance of __Win32Provider as $PropProv
{
    Name    =”RegPropProv” ;
    ClsID   = “{72967901-68EC-11d0-B729-00AA0062CBB7}”;
    ImpersonationLevel = 1;
    PerUserInitialization = “FALSE”;
};
instance of __PropertyProviderRegistration
{
    Provider       =$PropProv;
    SupportsPut    =TRUE;
    SupportsGet    =TRUE;
};
[DYNPROPS]
class CU_Desktop
{
    [key]
    string  index = “current”;
    sint32 CurrentUserDesktop;
};
[DYNPROPS]
instance of CU_Desktop
{
     [PropertyContext(“local|HKEY_CURRENT_USER\\Control Panel\\Desktop|Wallpaper”),
        Dynamic, Provider(“RegPropProv”)]
        CurrentUserDesktop;
};

또한 MOF 파일을 사용하면 WMI 공급자가 제공하지만 기본적으로 시스템에 포함되어 있지는 않은 정보에 액세스할 수 있습니다. 이러한 공급자를 사용하려면 클라이언트에서 MOF 파일을 컴파일하고 sms_def.mof를 확장하기 전에 WMI 공급자를 배포하고 설치해야 합니다.

요약

MIF와 MOF 파일은 정보를 빠르고 간편하게 수집하는 데 사용할 수 있는 강력한 도구입니다. 이 두 파일 형식은 테이블을 직접 수정할 필요 없이 SMS 데이터베이스에 정보를 쉽게 가져올 수 있는 프레임워크를 제공합니다. 상상력만 충분히 발휘한다면 거의 모든 정보를 인벤토리에 포함하고 보고할 수 있으며, 더 나아가 관리자는 중요한 정보를 사전에 수집할 수 있으므로 문제가 될 만한 상황을 미연에 방지할 수 있습니다.

MIF와 MOF 파일을 이해하는 데는 약간의 시간이 걸립니다. 그러나 다음의 유용한 리소스를 참조하면 이러한 파일을 사용하는 방법을 쉽게 배울 수 있습니다. 먼저 WMI 설명서 및 SDKSystems Management Server 2003 운영 가이드를 읽어 보십시오. 이러한 개념을 이해하려고 노력한다면 SMS 인벤토리 확장을 통해 훨씬 많은 것을 얻을 수 있을 것입니다.

Wes Dobry는 플로리다주 올랜도에서 대형 의료 회사의 컨설턴트 겸 네트워크 관리자로 근무하고 있습니다. 문의 사항이 있으면 wesdobry@wesdobry.com으로 연락하시면 됩니다.

© 2008 Microsoft Corporation 및 CMP Media, LLC. All rights reserved. 이 문서의 전부 또는 일부를 무단으로 복제하는 행위는 금지됩니다..