Компьютерный форум 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=330593)

tyhome 18-10-2017 16:00 2771583

Первое задание- инвентаризация в сети
 
Всем привет!
я новичок, разбираюсь с первым крупным заданием от старшего Сис. Админа- это провести инвентаризацию в сети винды и офиса
после того как сфоткал все наклейки на ПК пользователей, хочу массово через цмд получить ключи активации, которые сейчас стоят на винде7 пользователей.
Скачал PSTools, через psexec.exe имею доступ к компам, как автоматизировать данный скрипт для всех ПК в сети (Его я нашел на этом форуме).
(В идеале круто если каждый ПК создал бы со своим именем строчку, напротив которой ключ активации в csv/txt.)

Код:

Set WshShell = CreateObject("WScript.Shell")
regKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
DigitalProductId = WshShell.RegRead(regKey  & "DigitalProductId")
Win8ProductName = "Windows Product Name: "  & WshShell.RegRead(regKey  & "ProductName")  & vbNewLine
Win8ProductID = "Windows Product ID: "  & WshShell.RegRead(regKey  & "ProductID")  & vbNewLine
Win8ProductKey = ConvertToKey(DigitalProductId)
strProductKey ="Windows Key: "  & Win8ProductKey
Win8ProductID = Win8ProductName  & Win8ProductID  & strProductKey
MsgBox(Win8ProductKey)
MsgBox(Win8ProductID)

Function ConvertToKey(regKey)
    Const KeyOffset = 52
    isWin8 = (regKey(66) \ 6) And 1
    regKey(66) = (regKey(66) And  &HF7) Or ((isWin8 And 2) * 4)
    j = 24
    Chars = "BCDFGHJKMPQRTVWXY2346789"
    Do
        Cur = 0
        y = 14
        Do
            Cur = Cur * 256
            Cur = regKey(y + KeyOffset) + Cur
            regKey(y + KeyOffset) = (Cur \ 24)
            Cur = Cur Mod 24
            y = y -1
        Loop While y >= 0
        j = j -1
        winKeyOutput = Mid(Chars, Cur + 1, 1)  & winKeyOutput
        Last = Cur
    Loop While j >= 0
    If (isWin8 = 1) Then
        keypart1 = Mid(winKeyOutput, 2, Last)
        insert = "N"
        winKeyOutput = Replace(winKeyOutput, keypart1, keypart1  & insert, 2, 1, 0)
        If Last = 0 Then winKeyOutput = insert  & winKeyOutput
    End If
    a = Mid(winKeyOutput, 1, 5)
    b = Mid(winKeyOutput, 6, 5)
    c = Mid(winKeyOutput, 11, 5)
    d = Mid(winKeyOutput, 16, 5)
    e = Mid(winKeyOutput, 21, 5)
    ConvertToKey = 123 a  & "-"  & b  & "-"  & c  & "-"  & d  & "-"  & e
       
End Function


Elven 18-10-2017 16:11 2771590

0. Расшариваем папку с доступом "Domain Computers" на запись.
1. Правим скрипт (к слову: это VBS, а не CMD), чтобы он складывал отчет в файл, например, с именем компьютера, в шару указанную в п.0
2. Добавляем через групповые политики задачу от имени системы на целевые компы (здесь можно добавить подпункт с копированием скрипта на целевой комп, но это уже по желанию).
3. Пьем пиво дней несколько, пока собираются данные.
4. Демонстрируем начальнику шару.

почему такой способ лучше чем разовый запуск скрипта с проверкой всех доступных компов? потому что не все компы будут доступны во время запуска скрипта (см. законы Мерфи), в то время как задача в шедулере выполнится тогда, когда комп получит ее с групповыми политиками, сиречь при ближайшей перезагрузке или перечтении политик.

з.ы. пункты 3 и 4 можно поменять местами

tyhome 18-10-2017 16:53 2771598

Цитата:

Цитата Elven
1. Правим скрипт (к слову: это VBS, а не CMD), чтобы он складывал отчет в файл, например, с именем компьютера, в шару указанную в п.0 »

Нет доступа к правка групповых политик, поэтому этот пункт требует автоматизации своими силами, и я не очень понимаю, в силу своих начинаний
Например, как убрать у этого скрипта графический интерфейс, чтобы он сразу в файл записал данные и все

Iska 18-10-2017 16:57 2771599

Цитата:

Цитата tyhome
Например, как убрать у этого скрипта графический интерфейс, чтобы он сразу в файл записал данные и все »

Заменить MsgBox() на запись в файл.

tyhome 18-10-2017 17:01 2771601

Цитата:

Цитата Iska
Заменить MsgBox() на запись в файл. »

спасибо, как разберусь, прикреплю сюда скрипт и закрою тему


Время: 04:33.

Время: 04:33.
© OSzone.net 2001-