Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Объем ОЗУ у ПК в сети (http://forum.oszone.net/showthread.php?t=295244)

s_Nomad 09-02-2015 15:36 2468972

Объем ОЗУ у ПК в сети
 
Добрый день. За ранее прошу прощения за глупый и нубский вопрос.

Есть 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...puters_Memory_

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

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

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

Iska 09-02-2015 17:39 2469058

Цитата:

Цитата s_Nomad
Есть N ПК в группе в домене (весь домен очень большой, нужны только пк из этой группы). »

Давайте сразу уточним: в «группе» или же таки в организационном подразделении (OU)?

s_Nomad 09-02-2015 18:37 2469117

Цитата:

Цитата Iska
организационном подразделении (OU) »

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

Iska 09-02-2015 18:59 2469137

Цитата:

Цитата s_Nomad
у меня есть файл-список NetBIOS имен ПК которые нужно опросить и в .txt и в .csv формате »

Кодировка этого файла какова?

s_Nomad 09-02-2015 20:25 2469176

Цитата:

Цитата Iska
Кодировка этого файла какова? »

ANSI
Это имеет значение? Ведь можно перегнать в любую кодировку что текстовый файл, что файл с данными разделенный запятыми

Iska 10-02-2015 02:56 2469321

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 2469472

Цитата:

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

Нет, только латиница и каждое имя с новой строки.

Цитата:

Цитата Iska
Machine list file »

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

Iska 10-02-2015 19:05 2469606

Цитата:

Цитата s_Nomad
Нет, только латиница »

Это хорошо, ибо я сталкивался с некорректной работой Win32_PingStatus на кириллических именах.

Цитата:

Цитата s_Nomad
и каждое имя с новой строки. »

Хорошо, так и ожидается.

Цитата:

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

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

Цитата:

Цитата s_Nomad
а куда он выводит? »

При запуске по умолчанию, посредством «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 2470297

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

Iska 12-02-2015 13:02 2470312

Цитата:

Цитата s_Nomad
Вот колеблюсь только между VBS и Powershell. »

Если ещё не знакомы ни с тем, ни с другим, и эксплуатируемые ОС не ниже XP — начинайте сразу с PowerShell.

Цитата:

Цитата s_Nomad
Есть ли какой-то кросплатформеный язык? чтоб и под форточки и под линь канал? »

Угу. Python. Но советовать не буду.

s_Nomad 12-02-2015 19:13 2470514

Цитата:

Цитата Iska
Python. Но советовать не буду. »

Причина? там есть какие-то траблы с исполнением на MS? Я так понимаю нужно отдельно устанавливать обработчик?

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

Iska 12-02-2015 20:33 2470550

Цитата:

Цитата s_Nomad
Причина? »

Не является нативным компонентом, входящим в поставку.


Время: 03:42.

Время: 03:42.
© OSzone.net 2001-