代码之家  ›  专栏  ›  技术社区  ›  Zero

从PowerShell中的用户选择的证书获取基本信息

  •  0
  • Zero  · 技术社区  · 7 年前

    我正在为我们的服务台开发一个带有数据库后端的小型工单应用程序。其中一部分是跟踪有关我所在组织的笔记本电脑的一些基本信息(制造商、型号、序列号、分配给谁等)。我会使用一种真正的编程语言,如C#或Java,但由于我头脑中的人所指示的原因,我坚持使用Windows 10 Enterprise中内置的可用工具,因此PowerShell和WPF。

    我们的网络有一个具有大型Active Directory林和智能卡身份验证的Windows域。如果可能的话,我想做的是让用户通过UAC提示或Get Credential提示选择他们的智能卡证书(使用此应用程序的用户将不同于登录Windows的用户,即将插入多个智能卡)。输入他们的pin不是一项要求,但最好确认他们的身份。我只想从他们选择的证书/卡中检索一些基本信息,例如显示名称和电子邮件地址。我将使用电子邮件地址查询数据库中的其他信息,例如分配给他们的笔记本电脑。如果可能的话,我希望避免进行Active Directory查找,但这个选项并不是完全不可能的。

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/get-credential?view=powershell-5.1

    View All Certificates On Smart Card

    https://www.akaplan.com/blog/2013/10/get-users-mailaddress-from-smartcard-with-powershell/

    https://blogs.msdn.microsoft.com/alejacma/2010/12/15/how-to-enumerate-all-certificates-on-a-smart-card-powershell/

    1 回复  |  直到 7 年前
        1
  •  4
  •   TheMadTechnician    7 年前

    Out-GridView -OutputMode Single 参数以允许用户选择证书。从那里,您可以获得基于所示证书的用户信息。

    $SCSerials = certutil -scinfo -silent | Where{$_ -match 'Serial Number: (\S+)'} | ForEach {$Matches[1]}
    $SelectedThumb = Get-ChildItem Cert:\CurrentUser\my | Where{$_.SerialNumber -in $SCSerials} | Select Subject,Issuer,NotBefore,NotAfter,Thumbprint | Out-GridView -Title 'Select a smartcard certificate.' -OutputMode Single |% Thumbprint
    $UserCert = Get-Item Cert:\CurrentUser\My\$SelectedThumb
    

    然后 $UserCert.Subject