# Název certifikátu pro kopírování $certificateSubject = "CN=bajt.planina.cz" # Nahraďte konkrétním názvem nebo substringem předmětu certifikátu # Načtení certifikátů z úložiště "Web Hosting" $webHostingStore = New-Object System.Security.Cryptography.X509Certificates.X509Store "WebHosting", "LocalMachine" $webHostingStore.Open("ReadOnly") # Vyhledání všech certifikátů odpovídajících zadanému CN a výběr nejnovějšího podle data expirace $certificates = $webHostingStore.Certificates | Where-Object { $_.Subject -like "*$certificateSubject*" } $latestCertificate = $certificates | Sort-Object NotAfter -Descending | Select-Object -First 1 if ($latestCertificate -eq $null) { Write-Host "Certifikát nebyl nalezen v úložišti 'Web Hosting'" -ForegroundColor Red $webHostingStore.Close() return } Write-Host "Nejnovější certifikát nalezen: $($latestCertificate.Subject) s datem expirace $($latestCertificate.NotAfter)" -ForegroundColor Green # Otevření cílového úložiště "Personal" $personalStore = New-Object System.Security.Cryptography.X509Certificates.X509Store "My", "LocalMachine" $personalStore.Open("ReadWrite") # Odstranění starších certifikátů s kratší dobou expirace (tj. všech, které nejsou totožné s nejnovějším) $existingCertificates = $personalStore.Certificates | Where-Object { $_.Subject -like "*$certificateSubject*" } foreach ($cert in $existingCertificates) { if ($cert.Thumbprint -ne $latestCertificate.Thumbprint) { try { $personalStore.Remove($cert) Write-Host "Odstraněn starší certifikát: $($cert.Subject) s datem expirace $($cert.NotAfter)" -ForegroundColor Yellow } catch { Write-Host "Chyba při odstraňování certifikátu: $($cert.Subject). $_" -ForegroundColor Red } } } # Přidání nejnovějšího certifikátu do úložiště "Personal", pokud tam ještě není $exists = $personalStore.Certificates | Where-Object { $_.Thumbprint -eq $latestCertificate.Thumbprint } if (-not $exists) { try { $personalStore.Add($latestCertificate) Write-Host "Certifikát byl úspěšně zkopírován do úložiště 'Personal'" -ForegroundColor Green } catch { Write-Host "Došlo k chybě při kopírování certifikátu: $_" -ForegroundColor Red } } else { Write-Host "Certifikát již existuje v úložišti 'Personal'" -ForegroundColor Cyan } # Zavření úložišť $personalStore.Close() $webHostingStore.Close()