Войти

Показать полную графическую версию : [решено] Объем ОЗУ у ПК в сети


s_Nomad
09-02-2015, 15:36
Добрый день. За ранее прошу прощения за глупый и нубский вопрос.

Есть N ПК в группе в домене (весь домен очень большой, нужны только пк из этой группы). Нужно узнать сколько у каждого из ник ОЗУ. Как я понял это не сложно сделать по WMI

Как правильно доработать скрипт (это найболее подходящие под мою задачу что я нашел)

' Memory.vbs
' Sample VBScript to discover how much RAM in computer
' Author Guy Thomas http://computerperformance.co.uk/
' Version 1.4 - December 2010
' -------------------------------------------------------'
Option Explicit
Dim objWMIService, objComputer, colComputer
Dim strLogonUser, strComputer, intRamMB

strComputer = "."
strComputer = InputBox("Enter Computer name", _
"Find Computer Memory", strComputer)
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")

For Each objComputer in colComputer
intRamMB = int((objComputer.TotalPhysicalMemory) /1048576)+1
Wscript.Echo "System Name: " & objComputer.Name _
& vbCr & "Total RAM: " & intRamMB & " Mb"
Next

WScript.Quit

' End of free example of Memory WMI / VBScript


взят он от сюда http://www.computerperformance.co.uk/vbscript/wmi_memory.htm#Example_2_-_WMI_script_with_an_Input_Box_to_check_your_Computers_Memory_

чтоб я взять список ПК из файла (выгрузка из АД) и записать результаты в файл.

Заранее благодарю за помощь.

P.S. С скриптовыми языками не знаком (ни с шелом ни с вбс), подойдет помощь на любом из них.

Iska
09-02-2015, 17:39
Есть N ПК в группе в домене (весь домен очень большой, нужны только пк из этой группы). »
Давайте сразу уточним: в «группе» или же таки в организационном подразделении (OU)?

s_Nomad
09-02-2015, 18:37
организационном подразделении (OU) »

м... щас уже нет возможности посмотреть, но в любом случае, у меня есть файл-список NetBIOS имен ПК которые нужно опросить и в .txt и в .csv формате

Iska
09-02-2015, 18:59
у меня есть файл-список NetBIOS имен ПК которые нужно опросить и в .txt и в .csv формате »
Кодировка этого файла какова?

s_Nomad
09-02-2015, 20:25
Кодировка этого файла какова? »
ANSI
Это имеет значение? Ведь можно перегнать в любую кодировку что текстовый файл, что файл с данными разделенный запятыми

Iska
10-02-2015, 02:56
s_Nomad, примерно так:
Option Explicit

Dim strMachineList

Dim strComputer
Dim objSWbemLocator
Dim objSWbemObjectEx


If WScript.Arguments.Count = 1 Then
strMachineList = WScript.Arguments.Item(0)

With WScript.CreateObject("Scripting.FileSystemObject")
If .FileExists(strMachineList) Then
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")

With .OpenTextFile(strMachineList)
Do Until .AtEndOfStream
strComputer = Trim(.ReadLine())

If IsConnected(strComputer) Then
For Each objSWbemObjectEx In objSWbemLocator.ConnectServer(strComputer, "root\cimv2").ExecQuery("SELECT * FROM Win32_ComputerSystem")
WScript.Echo objSWbemObjectEx.Name, vbTab, objSWbemObjectEx.TotalPhysicalMemory
Next
Else
WScript.Echo strComputer & " not found."
End If
Loop

.Close
End With

Set objSWbemLocator = Nothing
Else
WScript.Echo "Machine list file [" & strMachineList & "] not found."
WScript.Quit 2
End If
End With
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Machine list file>"
WScript.Quit 1
End If

WScript.Quit 0
'=============================================================================

'=============================================================================
Function IsConnected(strAddress)
Dim objSWbemObjectEx

IsConnected = False

For Each objSWbemObjectEx In GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery( _
"SELECT * FROM Win32_PingStatus WHERE Address = '" & strAddress & "'" _
)

With objSWbemObjectEx
If Not IsNull(.StatusCode) And .StatusCode = 0 Then
IsConnected = True
End If
End With

Exit For
Next

Set objSWbemObjectEx = Nothing
End Function
'=============================================================================

В именах машин нет кириллицы?

s_Nomad
10-02-2015, 13:41
В именах машин нет кириллицы? »
Нет, только латиница и каждое имя с новой строки.

Machine list file »

я так понимаю в место этого я вписываю полный путь к .txt файлу, а куда он выводит?

Iska
10-02-2015, 19:05
Нет, только латиница »
Это хорошо, ибо я сталкивался с некорректной работой Win32_PingStatus на кириллических именах.

и каждое имя с новой строки. »
Хорошо, так и ожидается.

я так понимаю в место этого я вписываю полный путь к .txt файлу, »
Нет, имя файла ожидается увидеть аргументом скрипта.

а куда он выводит? »
При запуске по умолчанию, посредством «wscript.exe» — сообщениями на экран, при запуске посредством «cscript.exe» — на консоль. В последнем случае этот вывод можно перенаправить в файл. Т.е., например:
cscript.exe //nologo "E:\Песочница\0432\My Machine List.txt" >"c:\My Output List.txt"
где: «E:\Песочница\0432\My Machine List.txt» — перечень имён/адресов машин, «c:\My Output List.txt» — файл вывода.

s_Nomad
12-02-2015, 12:41
Iska, Спасибо тебе огромное! Все сработало. В строчном порядке начну учить скрипты. Вот колеблюсь только между VBS и Powershell.
Что посоветуешь? Есть ли какой-то кросплатформеный язык? чтоб и под форточки и под линь канал?

Iska
12-02-2015, 13:02
Вот колеблюсь только между VBS и Powershell. »
Если ещё не знакомы ни с тем, ни с другим, и эксплуатируемые ОС не ниже XP — начинайте сразу с PowerShell.

Есть ли какой-то кросплатформеный язык? чтоб и под форточки и под линь канал? »
Угу. Python. Но советовать не буду.

s_Nomad
12-02-2015, 19:13
Python. Но советовать не буду. »
Причина? там есть какие-то траблы с исполнением на MS? Я так понимаю нужно отдельно устанавливать обработчик?

Для XP насколько я знаю можно установить обработчик и тоже все хорошо

Iska
12-02-2015, 20:33
Причина? »
Не является нативным компонентом, входящим в поставку.




© OSzone.net 2001-2012