Это очень распространенная вещь, со многими статьями и примерами по всему Интернету в этом случае использования IIS. Это то, для чего используется модуль веб-администрирования.
<#
Get all IIS bindings and SSL certificates
On a local or remote IIS PowerShell Session
#>
Import-Module -Name WebAdministration
Get-ChildItem -Path IIS:SSLBindings |
ForEach-Object -Process {
if ($_.Sites)
{
$certificate = Get-ChildItem -Path CERT:LocalMachine/My |
Where-Object -Property Thumbprint -EQ -Value $_.Thumbprint
[PsCustomObject]@{
Sites = $_.Sites.Value
CertificateFriendlyName = $certificate.FriendlyName
CertificateDnsNameList = $certificate.DnsNameList
CertificateNotAfter = $certificate.NotAfter
CertificateIssuer = $certificate.Issuer
}
}
}
Настройте вышеперечисленное в соответствии со своими потребностями.
Обратите внимание, если вы используете устаревшую версию PowerShell:
[PsCustomObject] @ {} не будет работать в PS 2.0, но вы можете заменить его на New-Object -TypeName PSObject
Update
Вы запросили образец сценария для работать на нескольких серверах. Тем не менее, у вас уже есть код в вашем посте. Просто поместите эту Invoke-Command в ForEach l oop и передайте список компьютеров.
$Computers |
ForEach {
Invoke-Command -ComputerName $PSItem -ScriptBlock {
Get-ChildItem -Path 'Cert:\LocalMachine\My' -Recurse |
Select-Object -Property @{n='ServerName';e={$env:COMPUTERNAME}},Issuer, Subject, NotAfter,
@{Label='Expires In (Days)';Expression = {(New-TimeSpan -Start (Get-Date) -End $PSitem.NotAfter).Days}}
} | Export-Excel -Path "C:\users\$env:username\documents\MultipleServer_Certificate_Expiry_Details.xlsx"
}
Конечно, вам нужно добавить этот пример для блока Web Admin в ваш сертификат. Точки данных