如何仅使用脚本获取最后 5 个字符的 Office 许可证密钥
How to get last 5 character Office license key only using script
我使用以下命令获取办公室密钥的最后 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.
要处理文件(或命令的输出),请使用 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
循环提取第二个 "token" 通过将行拆分为 :
和 .
(它对每一行都这样做,但是变量被覆盖时间,导致捕获最后一行的第二个标记)。然后简单地删除剩余的空格。
(您甚至可以只使用 "tokens=9"
,它使用默认分隔符 SPACE、制表符、逗号,但我不建议这样做,因为我不知道您的所有机器是否 return 英文文本和其他语言的字数可能会有所不同。)
它将 return 最后一个键附加到 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%
可能有多个产品。
(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"
我使用以下命令获取办公室密钥的最后 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.
要处理文件(或命令的输出),请使用 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
循环提取第二个 "token" 通过将行拆分为 :
和 .
(它对每一行都这样做,但是变量被覆盖时间,导致捕获最后一行的第二个标记)。然后简单地删除剩余的空格。
(您甚至可以只使用 "tokens=9"
,它使用默认分隔符 SPACE、制表符、逗号,但我不建议这样做,因为我不知道您的所有机器是否 return 英文文本和其他语言的字数可能会有所不同。)
它将 return 最后一个键附加到 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%
可能有多个产品。
(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"