2012-01-23 5 views
1

저는 비교적 경험이없는 코더이며 VBScript를 통해 원격으로 물리적 디스크 일련 번호를 얻는 문제에 직면 해 있습니다.디스크 용 원격 WMI 호출 일련 번호

현재 Scripting Guys가 Scriptomatic V2에서 기본 스크립트를 사용하고 있습니다. 나는 2003 Server에서 실행 중이며 Win2000 및 WinXP SP2/SP3 시스템에서 정보를 얻으려고합니다. 몇 가지 자습서에서 WMI 클래스 권장 Win32_PhysicalMedia 봤어요.

On Error Resume Next 

Const wbemFlagReturnImmediately = &h10 
Const wbemFlagForwardOnly = &h20 

arrComputers = Array("STN_XP","STN_2000") 
    For Each strComputer In arrComputers 
    WScript.Echo 
    WScript.Echo "==========================================" 
    WScript.Echo "Computer: " & strComputer 
    WScript.Echo "==========================================" 

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMedia", "WQL", _ 
             wbemFlagReturnImmediately + wbemFlagForwardOnly) 

    For Each objItem In colItems 
     '(Removed a couple from the code, just showing the useful ones) 
     WScript.Echo "Model: " & objItem.Model 
     WScript.Echo "Name: " & objItem.Name 
     WScript.Echo "SerialNumber: " & objItem.SerialNumber 
     WScript.Echo "Tag: " & objItem.Tag 
     WScript.Echo 
     Next 
    Next 

지금 내가 얻을 출력은 다음과 같습니다 : 유용한 비트를 포함

이 모든 호출으로 스크립트를 실행 한 정확한 출력 참고; 데이터는 objItem.Tag 값 이상으로 반환되지 않습니다 :

========================================== 
Computer: STN_XP 
========================================== 
Capacity: 
Caption: 
CleanerMedia: 
CreationClassName: 
Description: 
HotSwappable: 
Manufacturer: 
MediaDescription: 
MediaType: 
Model: 
Name: 
OtherIdentifyingInfo: 
PartNumber: 
PoweredOn: 
Removable: 
Replaceable: 
SerialNumber: 
SKU: 
Status: 
Tag: \\.\PHYSICALDRIVE0 
Version: 
WriteProtectOn: 

========================================== 
Computer: STN_2000 
========================================== 

모든 컴퓨터가 도메인에 연결되어있다가, 나는 기본 관리자 계정에 로그인하고 있습니다. 다른 WMI 라이브러리 중 일부를 사용하여 데이터를 가져 왔으며 지금까지 특정 컴퓨터에서 일련 번호 (및 태그는 있지만 그 밖의 것은 없음)를 받았습니다. 저는 이것이 관리자 모드에서 실행해야하는 Vista의 문제인 것에 대해 읽었습니다. 사용중인 OS로 인해 여기에 문제가 있어서는 안됩니다. 누구가 잘못되었을 지 알고 있습니까?

후속 질문으로, 누구나 2000 스테이션에서 일련 번호를 얻는 방법을 알고 있습니까?

도움을 주시면 미리 감사드립니다.

+1

그래서 무엇이 문제입니까? –

+0

질문은 어떻게하면 하드 드라이브의 일련 번호를 원격으로 얻을 수 있습니까? objItem.SerialNumber는 작동해야하지만 작동하지 않아야합니다. 거기에 접근하기 위해 저에게해야 할 일이 있습니까, 아니면 제가 할 수있는 다른 방법이 있습니까? – Insomnia

+0

아, 죄송합니다. 방금 네가 의미하는 바를 깨달았다. 반환되는 데이터가 없습니다. 내가 보는 출력은 표시된 것과 정확히 동일합니다. 태그를 벗어나는 데이터가 제대로 반환되지 않습니다. 명확하게 OP를 수정했습니다. – Insomnia

답변

0

작은 따옴표로 On Error Resume Next를 주석 처리하고 반환 될 가능성이있는 오류 메시지를 게시하십시오.

+0

Win2000 스테이션에서 거의 immediatedly 오류가 발생합니다. ================================= 컴퓨터 : STN_11 == ========================== C : \ Documents and Settings \ Administrator \ Desktop \ Scriptomatic \ temp_script.sm (16, 4) (null) : 0x80041010 – Insomnia

+0

XP 스테이션의 경우 CDate에 대한 불일치 오류가 발생합니다 (그 이유 때문에 원본 출력에 표시되지 않았습니다). SerialNumber 및 태그에 대한 모든 호출 제거 ​​: ========================== ==== 컴퓨터 : STN_16 ========================= = SerialNumber : 태그 : \\. \ PHYSICALDRIVE0 – Insomnia

+0

2000 컴퓨터에 WMI 공급자가 설치되어 있지 않은 것으로 보입니다. 프로그램 추가 제거 -> Windows 구성 요소 -> 관리 및 모니터링 도구 -> WMI Windows 관리 설치 프로그램 공급자를 통해 설치할 수 있습니다. 하드웨어 공급 업체에서이 필드를 채우지 않고 있지만 작동하는 것 같습니다. WMITools를 사용하여 다른 속성이나 개체에 채워지는지 수동으로 탐색 해 볼 수 있습니다. http://www.microsoft.com/download/en/details.aspx?displaylang=ko&id=24045 –