我有以下代码浏览路径Cert:\LocalMachine\My
,以获取有关SSL证书的信息。我想知道如何浏览Cert:\LocalMachine
中的所有文件夹并获取其信息。我知道我需要添加另一个循环,但是我不知道该怎么做。
这是我写的脚本:
$route = "Cert:\LocalMachine\My"
$count = (Dir Cert:\LocalMachine\My\*).Count
$count=$count-1
For ($i=0; $i -le $count; $i++)
{
$subject = (Get-ChildItem $route)[$i].Subject
$thumb = (Get-ChildItem $route)[$i].Thumbprint
$expiredate = (Get-ChildItem $route)[$i].NotAfter
$startDate = Get-Date
$diff = (New-TimeSpan -Start $startDate -End $expiredate)
$days = $diff.Days
if ($diff.Days -ge 0)
{
if ($diff.Days -gt 30)
{
}
if($diff.Days -lt 30)
{
$mailtext3 = "are about to expire in less then"
$mailtext4 = "days"
$content= "$mailtext1,$subject,$mailtext3 $days $mailtext4"
Add-Content -Path C:\Users\hmk\Desktop\file.txt -Value "$content"
$expiredate
}
}
elseif($diff.Days -lt 0)
{
$mailtext3 = "already expired since"
$mailtext4 = "days"
$content= "$subject, $mailtext3,$days,$mailtext4"
Add-Content -Path C:\Users\hmk\Desktop\file.txt -Value "$content"
}
}
希望我能尽快得到答案
答案 0 :(得分:0)
赞:
$StartDate = Get-Date
$CertPath = 'Cert:\LocalMachine\My\'
$CertsDetail = Get-ChildItem -Path $CertPath -Recurse | Where-Object { $_.PsIsContainer -ne $true } | ForEach-Object {
$DaysLeft = (New-TimeSpan -Start $StartDate -End $_.NotAfter).Days
If ($DaysLeft -lt 30) {
$Under30 = $true
}
Else {
$Under30 = $false
}
If ($DaysLeft -lt 1) {
$Expired = $true
}
Else {
$Expired = $false
}
[pscustomobject]@{Subject = $_.Subject;`
Thumbprint = $_.Thumbprint;`
ExpireDate = $_.NotAfter;`
ExpiryDaysRemaining = $DaysLeft;`
Under30Days = $Under30;`
Expired = $Expired
}
}
Write-Host "Expiring in under 30 days:"
$CertsDetail | Where-Object { ($_.Under30Days) -and !($_.Expired)}
Write-Host "Expired:"
$CertsDetail | Where-Object { $_.Expired}