PowerShell Obtenga detalles del certificado con ejemplos
En PowerShell, utilice el cmdlet Get-ChildItem para obtener detalles del certificado, enumerar todos los certificados en el almacén personal o en la computadora remota, obtener certificados instalados y mostrar detalles de certificación como Huella digital, Asunto, NotAfter, etc.
Los certificados se almacenan en el almacén de certificados. Utilice el comando Certmgr.msc en Windows para acceder al almacén de certificados o abra el Panel de control y busque administrar certificados de computadora.
Usar PowerShell para obtener los detalles del certificado de Windows es muy fácil y podemos ver todos los detalles del certificado y exportarlos a un archivo CSV.
En esta publicación, analizaremos cómo obtener detalles de certificados del almacén raíz y enumerar los certificados en el almacén personal. El proveedor de certificados expone el espacio de nombres del certificado como unidad Cert: en PowerShell.
Obtener los detalles del certificado almacenados en el directorio raíz de una máquina local
Get-ChildItem Cert:\LocalMachine\Root\* | ft -AutoSizeEn el ejemplo anterior, el cmdlet Get-ChildItem de PowerShell utiliza la ruta Cert:\LocalMachine\Root para obtener información del certificado del directorio raíz en una cuenta de máquina local.
El comando de PowerShell anterior enumera todos los certificados del directorio raíz y muestra los detalles del certificado a continuación
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
Thumbprint Subject
---------- -------
E4C3B69139C26ED0620ADF4F727C9D19BF66391 CN=corp-in-252
EDD4EEAE6000A7F40C3202C171E30148030C072 CN=Microsoft Root Certificate Authority, DC=microsoft, DC=com
EE36A4562FB2E05DBB3S32323ADF445084ED656 CN=Timestamping CA, OU=Certification, O=, L=D...
E43489159A5200D93D022CCAF37E7FE20A8B419 CN=Microsoft Root Authority, OU=Microsoft Corporation, OU=Copyrig...
784E459FF99D8FD97AFS46DCDCBCB90E0B7FCD5 CN=localhost
22B46C76E1305104F230517E6E504D43AB10B5 CN=Symantec Enterprise Mobile Root for Microsoft, O=Symantec Corp...
AF43288AD2722103B6AB1428485EA3014C0BCFE CN=Microsoft Root Certificate Authority 2011, O=Microsoft Corpora...Listar certificados en la tienda personal
Los certificados almacenados en el almacén personal se pueden recuperar fácilmente mediante el cmdlet Get-ChildItem.
#Get installed certificates from localmachine
$certs = Get-ChildItem Cert:\LocalMachine\My | ft -AutoSize
#Display results in console
$certsEn el script de PowerShell anterior, el cmdlet Get-ChildItem usa la ruta Cert:\LocalMachine\My para obtener todas las listas de certificados. Enumera los certificados en el almacén personal junto con detalles de certificación como Huella digital y Asunto.
El resultado del script de PowerShell anterior muestra todos los certificados de los almacenes personales y las propiedades Thumbprint y Asunto de los certificados como se muestra a continuación.
Thumbprint Subject
---------- -------
D4C3B69139C26AD0610FDF4F727C9D19BF66391 CN=corp-in-252
984E459FF9987FD97AFC46DCDCBCB90E0B7FCD5 CN=localhost
30B2EF587D70C873A46C34586599B94BF8F42B4 CN=localhost
21E1CF06BA981753337D4773CF9CB1D29100684 CN=localhost
10D6649DC0672CC1866F26B0E6BA4E7BFFCA4E3 CN=corp-in-252
0B8DF4B103544C05FB9633DB5553727803BEE2D CN=corp-in-252.shellgeek.orgEnumerar certificados en una computadora remota usando PowerShell
Utilice el cmdlet Invoke-Command en PowerShell con el nombre de la computadora remota para ejecutar el bloque de script que ejecuta el cmdlet Get-ChildItem para obtener certificados en el servidor remoto.
Ejecute el siguiente comando para enumerar los certificados en la computadora remota.
Invoke-Command -ComputerName corp-in-254 -Scriptblock {Get-ChildItem Cert:\LocalMachine\My\ }En el script de PowerShell anterior, Invoke-Command usa la propiedad ComputerName para especificar el nombre del servidor remoto. El cmdlet Get-ChildItem utiliza una ruta de almacenamiento LocalMachine de una computadora remota para obtener certificados y sus detalles.
El resultado del script de PowerShell anterior para obtener todos los certificados de la computadora remota y ver sus detalles como se muestra a continuación:
PS C:\> Invoke-Command -ComputerName corp-in-254 -Scriptblock {Get-ChildItem Cert:\LocalMachine\My\ }
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
Thumbprint Subject PSComputerName
---------- ------- --------------
8D0718A1037DB06BD4557B6BFB733E73D7962AD3 CN=be32a42c-7d1f-6732-a173-7e4fac624a... corp-in-254Obtener el nombre descriptivo del certificado en PowerShell
En PowerShell, para obtener el nombre descriptivo del certificado, use la propiedad FriendlyName del certificado.
# Get all certificates
$mycertificates = Get-ChildItem -Path Cert:\LocalMachine\My\
# Find Friendly Name of the certificate
$mycertificates | Select ThumbPrint,FriendlyName
En el script de PowerShell anterior, el cmdlet Get-ChildItem recupera todos los certificados del almacén LocalMachine\My y los almacena en la variable $mycertificates.
Utilice la propiedad FriendlyName de un certificado para devolver el valor del tipo de cadena.
El resultado del script anterior para buscar el nombre descriptivo del certificado en PowerShell es:
Obtener el nombre del sujeto del certificado en PowerShell
En PowerShell, para recuperar el nombre del sujeto del certificado, utilice la propiedad SubjectName del certificado.
# Get the certificate by thumbprint
$uacert = Get-ChildItem -Path 'Cert:\LocalMachine\UA Applications\841048409e5e81af553a6fa599f0d7ea8c2f5c08'
# Obtain SubjectName of the certificate
$uacert.SubjectName.Name
En el script de PowerShell anterior, el cmdlet Get-ChildItem recupera los detalles del certificado mediante la huella digital y los almacena en la variable $uacert.
Utilice la propiedad SubjectName de un certificado para devolver el nombre distinguido X500 en tipo de cadena.
El resultado del script anterior para buscar el nombre del sujeto de un certificado en PowerShell es:
PS C:\> $uacert = Get-ChildItem -Path 'Cert:\LocalMachine\UA Applications\841048409e5e81af553a6fa599f0d7ea8c2f5c08'
PS C:\> $uacert.SubjectName.Name
CN=UA Configuration Tool, DC=CORP-EU-102
PS C:\> Obtener el nombre del emisor del certificado en PowerShell
En PowerShell, para recuperar el nombre del emisor del certificado, utilice la propiedad IssuerName del certificado.
# Get the certificate by thumbprint
$uacert = Get-ChildItem -Path 'Cert:\LocalMachine\UA Applications\841048409e5e81af553a6fa599f0d7ea8c2f5c08'
# Obtain IssuerName of the certificate
$uacert.IssuerName.NameEn el script de PowerShell anterior, el cmdlet Get-ChildItem recupera los detalles del certificado mediante la huella digital y los almacena en la variable $uacert.
Utilice la propiedad IssuerName de un certificado para devolver el nombre distinguido X500 en tipo de cadena.
El resultado del script anterior para buscar el nombre del emisor de un certificado en PowerShell es:
PS C:\> $uacert = Get-ChildItem -Path 'Cert:\LocalMachine\UA Applications\841048409e5e81af553a6fa599f0d7ea8c2f5c08'
PS C:\> $uacert.IssuerName.Name
CN=UA Configuration Tool, DC=CORP-EU-102
PS C:\> Obtenga información del certificado en un CSV mediante PowerShell
En PowerShell, use el cmdlet Get-ChildItem para obtener todos los certificados y sus detalles o información. Utilice el cmdlet Export-CSV para exportar información al archivo CSV.
Ejecute el siguiente script de PowerShell para obtener toda la información del certificado en un CSV.
# Get all certificates from the store
$mycertificates = Get-ChildItem -Path Cert:\LocalMachine\My\ | Select Thumbprint,NotAfter,SerialNumber
# Export certificates information to the CSV file
$mycertificates | Export-Csv -Path D:\export_certificates.csv -NoTypeInformation En el script de PowerShell anterior, Get-ChildItem usa el parámetro Path para especificar la ubicación del almacén de certificados LocalMachine\My y recupera todos los certificados y sus detalles y los almacena en la variable $mycertificates.
La variable $mycertificates que almacena información del certificado pasa el resultado al cmdlet Export-CSV. El comando Export-CSV utiliza el parámetro Path para especificar la ruta de destino para guardar la información del certificado en CSV.
Conclusión
Espero que el artículo anterior le resulte interesante sobre cómo obtener detalles del certificado de Windows utilizando Powershell en la máquina local o en la computadora remota.
En PowerShell, use la unidad Get-ChildItem Cert:\ para obtener información del certificado. Como en el artículo anterior, puede obtener fácilmente los detalles del certificado y obtener certificados en la computadora remota.
Puede encontrar más temas sobre los comandos de PowerShell Active Directory y los conceptos básicos de PowerShell en la página de inicio de ShellGeek.
