.txt с активацией Windows (пакетный файл) - PullRequest
0 голосов
/ 20 января 2019

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

Прежде чем вы спросите "нет", у нас нет сервера корпоративного лицензирования или чего-то подобного, к сожалению.мой босс старая школа

Итак, у меня есть код, который имеет:

@echo off
for /f %%i in (computers.txt) do shutdown -r -t 0 -m %%i// and that works fine and restarts all pcs i have in the .txt file in ip address form. then i run around trying to catch all the activation windows before they dissapear. but im trying to get it to check windows activation and output that to a text file with all the units that are NOT activated.  

@echo off
for /f %%i in (computers.txt) do cscript /nologo c:\windows\system32\slmgr.vbs /xpr > ActivatedStatus.txt | findstr /i /c:" will expire "> NUL 2>&1
if [%errorlevel%]==[0] (echo Not permanently activated.) else (echo Permanently activated)
pause
exit /b

Он отлично работает и проверяет локальный компьютер, но я просто не могу заставить его отправить команду на заданный набор IP-адресов,любая помощь будет принята с благодарностью.заимствовал фрагменты кода отсюда, чтобы сделать это.понял, что пришло время для помощи.

1 Ответ

0 голосов
/ 20 января 2019

Если ваша целевая ОС Windows 7 или новее, возможно, что-то из этого поможет вам:

@Echo Off
Set "XSL=csv"
For /F "EOL=MDelims=" %%A In ('"WMIc OS Get MUILanguages,Version"'
) Do For /F Tokens^=2^,4-5Delims^=.^"^  %%B In ("%%A"
) Do If %%C Equ 6 If %%D Equ 1 Set "XSL=%__APPDIR__%WBEM\%%B\%XSL%
WMIC /Output:Results.log /Node:@Computers.txt Path SoftwareLicensingProduct^
 Where "PartialProductKey Is Not Null And Name Like 'Windows(R)%%' And Not LicenseStatus='1'"^
 Get LicenseStatus,Name,ProductKeyID /Format:"%XSL%"

Идея состоит в том, что он будет проверять каждый из перечисленных компьютеров по одному на строку в файле.с именем computers.txt в текущем рабочем каталоге.Если продукт Windows(R) не отображается как лицензированный, (то есть 1) , он должен вывести некоторую соответствующую информацию в файл с именем Results.log также в текущем рабочем каталоге.

Выходные данные о состоянии лицензии будут переведены в одно из следующих значений:

0: нелицензировано
1: лицензировано
2: OOB Grace
3: OOT Grace
4: Non-Genuine Grace
5: Уведомление
6: Extended Grace

Примечание: Возможно, вам не нужны строки 3 - 5 приведенного выше сценария, если вы не проверяете с компьютера Windows 7, я добавил их из-за известной проблемы с расположением csv.xsl файл на версиях этой ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...