Активируйте Windows на многих ПК с разными последовательностями FPP
Я пишу сценарий для автоматизации активации 200 сотен ПК, например, с использованием ключа корпоративного лицензирования, но здесь дело обстоит так: серийные номера предназначены для полного упакованного продукта.
- Использовал текстовый файл для хранения серийных номеров по одному на строку.
- Прочитайте 29 символов (сериал)
- Вызовите slmgr для установки ключа, а затем активируйте его.
- Добавьте в строку "Используемый ключ", чтобы указать, что он был использован.
В настоящее время у меня есть этот код:
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