Активируйте Windows на многих ПК с разными последовательностями FPP

Я пишу сценарий для автоматизации активации 200 сотен ПК, например, с использованием ключа корпоративного лицензирования, но здесь дело обстоит так: серийные номера предназначены для полного упакованного продукта.

  1. Использовал текстовый файл для хранения серийных номеров по одному на строку.
  2. Прочитайте 29 символов (сериал)
  3. Вызовите slmgr для установки ключа, а затем активируйте его.
  4. Добавьте в строку "Используемый ключ", чтобы указать, что он был использован.

В настоящее время у меня есть этот код:

If Not WScript.Arguments.Named.Exists("elevate") Then
  CreateObject("Shell.Application").ShellExecute WScript.FullName _
    , WScript.ScriptFullName & " /elevate", "", "runas", 1
  WScript.Quit
End If

Dim objFSO, objTextFile
Dim sRead, sReadLine, sReadAll
Const ForReading = 1, ForAppending = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("D:\SN.txt", ForReading)
sRead = objTextFile.Read(29)
Set objShell = Wscript.CreateObject("WScript.Shell")
objShell.Run "slmgr.vbs -ipk " & sRead
objShell.Run "slmgr.vbs -ato"
Set objTextFile = objFSO.OpenTextFile("D:\SN.txt", ForAppending, True)
objTextFile.Write (" Used Key.")
objTextFile.Close

Проблема заключается в том, как использовать этот скрипт один раз на каждом ПК, то есть перейти к следующей строке, когда скрипт выполняется на другом ПК.

1 ответ

Решение

Мне не совсем понятно, касается ли ваш вопрос о том, как обращаться с ключами продукта, или о том, как запустить скрипт на каждом компьютере. В последнем случае вам необходимо предоставить больше информации о вашей среде, поэтому в этом ответе я расскажу только об обработке ключей.

Обработка ключа продукта может быть реализована с использованием разных файлов для используемых и неиспользуемых ключей. Сначала вы читаете доступные ключи в соответствующую структуру данных (например, ArrayList):

basedir    = objFSO.GetParentFolderName(WScript.ScriptName)
unusedKeys = objFSO.BuildPath(basedir, "SN.txt")

Set objTextFile = objFSO.OpenTextFile(unusedKeys, ForReading)
Set keys = CreateObject("System.Collections.ArrayList")
Do Until objTextFile.AtEndOfStream
  keys.Add objTextFile.ReadLine
Loop
objTextFile.Close

Извлеките ключ из списка и запишите его в файл "используемые ключи продукта":

If keys.Count > 0 Then
  productKey = keys(0)
  keys.RemoveAt(0)
  usedKeys = objFSO.BuildPath(basedir, "used-sn.txt")
  objFSO.OpenTextFile(usedKeys, ForAppending, True).WriteLine productKey
Else
  WScript.Echo "No product key available."
  WScript.Quit 1
End If

Запишите оставшиеся неиспользованные ключи обратно в исходный файл:

Set objTextFile = objFSO.OpenTextFile(unusedKeys, 2)
For Each key In keys
  objTextFile.WriteLine key
Loop
objTextFile.Close
Другие вопросы по тегам