-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
good first issueGood for newcomersGood for newcomers
Description
Немного концевой оптимизации. И гораздо быстрее, и красивее. add-member медленный; зачем 100500 раз изменять структуру объекта? Один раз создали и все.
# Последовательно обрабатываем переданные сертификаты
$MaxExpireDays = if ($FixExpire) {500} else {0}
foreach ($CertificateItem in $Certificate) {
$IssuerData = ConvertTo-HashTable -StringData $CertificateItem.IssuerName.Format($true)
$SubjectData = ConvertTo-HashTable -StringData $CertificateItem.SubjectName.Format($true)
$ExtensionData = ConvertTo-HashTable -ExtensionData $CertificateItem.Extensions
$CertificateData = [ordered]@{
$DataKey = ''
"CER-THUMBPRINT" = $CertificateItem.Thumbprint
"CER-CREATE" = $CertificateItem.NotBefore.ToString("dd.MM.yyyy HH:mm:ss")
"CER-EXPIRE" = (Repair-Date -BeforeDate $CertificateItem.NotBefore -AfterDate $CertificateItem.NotAfter -MaxDays $MaxExpireDays).ToString("dd.MM.yyyy HH:mm:ss")
"CER-NAME" = ''
# Информация об издателе
"CER-ISSUER" = Repair-Name $IssuerData["CN"]
"CER-ISSUER-DOMAIN" = $IssuerData["DC"]
"CER-ISSUER-DEPARTMENT" = $IssuerData["OU"]
"CER-ISSUER-LOCALITY" = $IssuerData["L"]
"CER-ISSUER-EMAIL" = $IssuerData["E"]
"CER-ISSUER-INN" = Repair-Name $IssuerData["ИНН"] -Expanded
"CER-ISSUER-OGRN" = Repair-Name $IssuerData["ОГРН"] -Expanded
"CER-ISSUER-STATE" = ''
"CER-ISSUER-COUNTRY" = ''
# Информация об субъекте
"CER-SUBJECT" = (Repair-Name $SubjectData["CN"])
"CER-SUBJECT-DOMAIN" = $SubjectData["DC"]
"CER-SUBJECT-DEPARTMENT" = $SubjectData["OU"]
"CER-SUBJECT-LOCALITY" = $SubjectData["L"]
"CER-SUBJECT-EMAIL" = $SubjectData["E"]
"CER-SUBJECT-EMPLOYEE" = Repair-Name (Join-Items $SubjectData["SN"], $SubjectData["G"] -NoEmpty)
"CER-SUBJECT-TITLE" = $SubjectData["T"]
"CER-SUBJECT-INN" = Repair-Name $SubjectData["ИНН ЮЛ"] -Expanded
"CER-SUBJECT-OGRN" = Repair-Name $SubjectData["ОГРН"] -Expanded
# Информация об встроенных лицензиях
"CER-EMBEDDED-LICENSE" = Repair-NotEmpty $ExtensionData @{"1.2.643.2.2.49.2" = "КриптоПро CSP"}
}
# Информация об сертификате
if ($DataKey -and $DataValue) {
$CertificateData[$DataKey] = $DataValue
} else {$CertificateData.remove($DataKey)}
if ($Expanded) {
$CertificateData["CER-NAME"] = ((Repair-Date -BeforeDate $CertificateItem.NotBefore -AfterDate $CertificateItem.NotAfter -MaxDays $MaxExpireDays).ToString("yyyy.MM.dd") + " #" + $CertificateItem.Thumbprint.Substring($CertificateItem.Thumbprint.Length - 4) + " - " + (Get-FirstItem (Repair-Name (Join-Items $SubjectData["SN"], $SubjectData["G"] -NoEmpty)), (Repair-Name $SubjectData["CN"] -Expanded) -NoEmpty))
} else {$CertificateData.remove("CER-NAME")}
# Информация об издателе
if ($Expanded) {
$CertificateData["CER-ISSUER-STATE"] = $IssuerData["S"]
$CertificateData["CER-ISSUER-COUNTRY"] = $IssuerData["C"]
} else {
$CertificateData.remove("CER-ISSUER-STATE")
$CertificateData.remove("CER-ISSUER-COUNTRY")
}
if ($Expanded) {
$CertificateData["CER-SUBJECT-SNILS"] = Repair-Name $SubjectData["СНИЛС"] -Expanded
$CertificateData["CER-SUBJECT-STATE"] = $SubjectData["S"]
$CertificateData["CER-SUBJECT-COUNTRY"] = $SubjectData["C"]
}
# результат
if ((-not $DataValue) -and $DataKey) {
$CertificateData[$DataKey]
}
else {
[pscustomobject]$CertificateData
}
}UPDATE
русский язык:
об сертификате => о сертификате
об встроенных лицензиях => о встроенных лицензиях
об субъекте => о субъекте
(но об стол и о столб :-)))
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
good first issueGood for newcomersGood for newcomers