Как получить последний 5-значный лицензионный ключ Office только с помощью скрипта - PullRequest
0 голосов
/ 28 сентября 2019

Я использую приведенную ниже команду, чтобы получить последние 5 символов служебного ключа.

cscript "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus >> key.txt

Результат в текстовом файле:

Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved.

---Processing--------------------------
--------------------------------------- PRODUCT ID: 00216-40000-00000-AA541 SKU ID: b322da9c-a2e2-4058-9e4e-f59a6970bd69 LICENSE NAME: Office 15, OfficeProPlusVL_KMS_Client edition LICENSE DESCRIPTION: Office 15, VOLUME_KMSCLIENT channel LICENSE STATUS: 
---LICENSED---  Last 5 characters of installed product key: GVGXT ........

Как я могу получить «GVGXT»только вместо того, чтобы получать много информации.Я пытался прочитать key.txt и получить только «GVGXT», а затем сохранить в CSV.

Ответы [ 3 ]

0 голосов
/ 28 сентября 2019

Возвращает последний ключ, добавленный key.txt,

@echo off

setlocal

for /f "tokens=2 delims=:" %%G IN ('findstr /C:"Last 5 characters of installed product key:" ^<key.txt') do ( set "key=%%G" )
set "key=%key: =%"
echo %key%

Мы можем пойти без файла,

@echo off

setlocal

for /f "tokens=2 delims=:" %%G IN ('cscript "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus ^| findstr /C:"Last 5 characters of installed product key:"') do ( set "key=%%G" )
set "key=%key: =%"
echo %key%
0 голосов
/ 28 сентября 2019

Может быть несколько продуктов.

(Get-WmiObject -Class SoftwareLicensingProduct -Filter 'ProductKeyId != NULL') |
    Select-Object -Property Description,PartialProductKey

Это может быть помещено в файл сценария .bat или в командную строку cmd.exe.

powershell -NoLogo -NoProfile -Command ^
    "(Get-WmiObject -Class SoftwareLicensingProduct -Filter 'ProductKeyId != NULL') |" ^
    "    Select-Object -Property Description,PartialProductKey"
0 голосов
/ 28 сентября 2019

Для обработки файла (или вывода команды) используйте цикл for /f:

@echo off
setlocal
for /f "tokens=2 delims=:." %%a in ('cscript "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus') do set "key=%%a"
set "key=%key: =%" & REM remove spaces
echo ---%key%---

Цикл for извлекает второй «токен», разделяя строки на : и. (Это делается для каждой строки, но переменная каждый раз перезаписывается, что приводит к перехвату второго токена последней строки).Затем просто удалите оставшиеся пробелы.

(Вы можете даже просто использовать "tokens=9", который использует разделители по умолчанию SPACE, TAB, COMMA, но я не рекомендую это делать, потому что я не знаю, все ли вашимашины возвращают английский текст, и количество слов в других языках, вероятно, будет другим.)

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