如何仅使用脚本获取最后 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"