2010-01-20 34 views
8

Chúng tôi có cụm thử nghiệm tự động dựa trên lưới điện selen.Cách lập trình xác định phiên bản IE đã cài đặt từ tập lệnh

Để quản lý cụm, tôi đã xây dựng một bộ sưu tập các tác vụ Rake (Ruby) có thể bắt đầu, khởi động lại, ping và dừng các nút. Tôi đang thử nghiệm ứng dụng của mình trên một số trình duyệt bao gồm IE6, IE7 và IE8. Điều này có nghĩa là mỗi nút trong cụm phải biết phiên bản nào của IE được cài đặt để có thể xác nhận tên hồ sơ lưới điện selen chính xác (ví dụ: "IE6 on Windows XP" so với "IE8 on Windows Vista"), để có thể viết một số thử nghiệm nhất định đối với các trình duyệt đó.

Câu hỏi của tôi:

Tôi muốn cắt giảm các công việc cấu hình ở đây. Làm cách nào để xác định phiên bản IE nào đang chạy trên hệ thống hiện tại? Tôi đã thử kỹ thuật sau:

wmic product where "Vendor like '%Microsoft%'" get Name, Version 

Nhưng điều này chỉ trả về các phiên bản chương trình được cài đặt với trình cài đặt Windows, vì vậy IE không hiển thị trong danh sách này.

Lý tưởng nhất là tôi muốn có thể xác định điều này từ bên trong một tập lệnh Rake, hoặc ít nhất một điều gì đó có thể gọi được từ tập lệnh Rake.

Trả lời

2

Bạn có thể sử dụng WMI, tôi biết đó không phải là tập lệnh cào, nhưng bạn có thể chạy tập lệnh (hoặc tạo ứng dụng .NET) và nạp kết quả vào ứng dụng của bạn.

Đó là loại hack, nhưng ít nhất nó sẽ hoạt động. Đây là một số mã từ technet.

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & _ 
    "\root\cimv2\Applications\MicrosoftIE") 

Set colIESettings = objWMIService.ExecQuery _ 
    ("Select * from MicrosoftIE_Summary") 

For Each strIESetting in colIESettings 
    Wscript.Echo strIESetting.Version 
Next 

Full Source

Khi bạn có thông tin này, bạn có thể chuyển thông tin đến kịch bản cào của bạn bằng cách sử dụng dòng lệnh.

rake YourScript[<argument from vbscript>] 

EDIT: Bạn có thể sao chép/dán mã này vào một tập tin, tên nó whatever.vbs, và sử dụng cscript lệnh để thực thi kịch bản.

cscript // nologo ie_version.vbs

+0

Awesome, điều này dường như làm việc, tuy nhiên kết quả đầu ra Wscript.Echo đến một cửa sổ. Có cách nào dễ dàng để xuất ra stdout không? – Maciek

+0

xem chỉnh sửa, đó có phải là những gì bạn muốn không? –

+0

Cảm ơn! Tôi poked xung quanh với các tùy chọn cscript và cũng được thêm vào // Nologo để bỏ qua thông điệp bản quyền của MS. – Maciek

1

Hãy thử điều này cho bất kỳ phiên bản của Windows:

Const HKEY_LOCAL_MACHINE = &H80000002 

strComputer = "." 

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") 

strKeyPath = "SOFTWARE\Microsoft\Internet Explorer" 

strValueName = "Version" 

oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue 

Wscript.Echo "Installed IE Version: " & strValue 

Wscript.Echo "IE Version: " & Left(strValue,1) 
Các vấn đề liên quan