如何使用Cmdkey.exe / list powershell脚本报告Office应用程序中的Microsoft帐户许可证?

问题描述

我们试图在运行此Powershell脚本后仅报告以下信息。

“ LegacyGeneric:target:MicrosoftAccount:user =”

cmdkey.exe /list | ForEach-Object {$found=$false} {
    $line = $_.Trim()
    if ($line -eq '') 
    {
        if ($found) { $newobject }
        $found = $false
        $newobject = '' | Select-Object -Property Type,User,Info,Target
    }
    else
    {
        if ($line.StartsWith("Target: "))
        {
            $found = $true
            $newobject.Target = $line.Substring(8)
        }
        elseif ($line.StartsWith("Type: "))
        {
            $newobject.Type = $line.Substring(6)
        }
        elseif ($line.StartsWith("User: "))
        {
            $newobject.User = $line.Substring(6)
        }
        else
        {
            $newobject.Info = $line
        }

    }
}

背后的想法是仅获得Microsoft Office应用程序用来获取其许可证的Microsoft帐户,如下所示。

Credential Manager example

在此先感谢任何愿意提供帮助的人!

解决方法

不确定我们的字母是否不同或您是否有错字。您列出了LegacyGeneric:target:MicrosoftAccount:user=,但我只看到了LegacyGeneric:target=MicrosoftAccount:user=

如果我的不同,请修改它。如果您只想要该帐户,则可以使用类似这样的方法。

cmdkey /list | foreach {
    if($_ -match 'LegacyGeneric:target=MicrosoftAccount:user=(.*)')
    {
        [PSCustomObject]@{Account = $matches.1}
    }
}

对我来说输出看起来像

Account            
-------            
username1@email.com
username2@email.com

如果您想要单线,也可以这样做。

[PSCustomObject]@{Account = $(cmdkey /list | foreach {if($_ -match 'LegacyGeneric:target=MicrosoftAccount:user=(.*)'){$matches.1}})}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...