เดตเดฟเตปเดกเตเดธเต เดธเตเตผเดตเดฑเตเดเดณเดฟเดฒเต เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเดณเตเดเต เดธเดพเดงเตเดค เดเดพเดฒเดฏเดณเดตเต เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดฎเดคเดฒ เด เดเตเดคเตเดคเดฟเดเต เดเดเตเดเตพ เด เดญเดฟเดฎเตเดเตเดเดฐเดฟเดเตเดเต. เดถเดฐเดฟ, เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเตพ เดชเดฒเดคเดตเดฃ เดฎเดคเตเดคเดเตเดเดฏเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเดคเดฟเดจเตเดถเตเดทเด เดเดพเตป เดเดเตเดเดจเต เดเดดเตเดจเตเดจเตเดฑเตเดฑเต, เด เดตเดฐเตเดเต เดชเตเดคเตเดเตเดเดฒเดฟเดจเต เดเดคเตเดคเดฐเดตเดพเดฆเดฟเดฏเดพเดฏ เดคเดพเดเดฟเดฏเตเดณเตเดณ เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเดเตป เด เดตเดงเดฟเดฏเดฟเดฒเดพเดฏเดฟเดฐเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต. เด เดคเตเดเดดเดฟเดเตเดเต เดเดพเดจเตเด เด เดตเดจเตเด เดเดจเตเดคเต เดธเดเดถเดฏเดฟเดเตเดเต, เด เดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดฟเดจเตเดคเดฟเดเตเดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. เดเดเตเดเตพ NetXMS เดฎเตเดฃเดฟเดฑเตเดฑเดฑเดฟเดเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดธเดพเดตเดงเดพเดจเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดเดคเต เดชเตเดฐเดงเดพเดจเดตเตเด เดคเดคเตเดตเดคเตเดคเดฟเตฝ, เด เดเดพเดธเตเดเตเดเดฟเดจเตเดณเตเดณ เดเด เดธเตเดฅเดพเดจเดพเตผเดคเตเดฅเดฟเดฏเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดซเดฒเด เดเดเตเดตเดฟเตฝ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเตเดชเดคเตเดคเดฟเตฝ เดฒเดญเดฟเดเตเดเต:
เดเตเดเดพเดคเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดคเดจเตเดจเต เดคเตเดเดฐเตเดจเตเดจเต.
เดชเตเดเต. NetXMS-เตฝ เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตเดจเตเดจ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเตพเดเตเดเดพเดฏเดฟ เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดเตเดฃเตเดเตผ เดเดจเตเดจเตเดฎเดฟเดฒเตเดฒ, เด
เดคเดฟเดจเดพเตฝ เดจเดฟเดเตเดเตพ เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เดธเตเดทเตโเดเดฟเดเตเดเตเดเดฏเตเด เดกเดพเดฑเตเดฑ เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดตเตเดฃเด. เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, Powershell-เตฝ, เดเดคเต เดตเดฟเตปเดกเตเดธเต เดเดฃเต. เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดชเตเดชเดฑเตเดฑเตเดฑเดฟเดเดเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต เดเดฒเตเดฒเดพ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเดณเตเด เดตเดพเดฏเดฟเดเตเดเตเดเดฏเตเด เด
เดตเดฟเดเต เดจเดฟเดจเตเดจเต เดฆเดฟเดตเดธเดเตเดเตพเดเตเดเตเดณเตเดณเดฟเตฝ เด
เดตเดฏเตเดเต เดเดพเดฒเดนเดฐเดฃ เดคเตเดฏเดคเดฟ เดเดเตเดคเตเดคเต เด เดจเดฎเตเดชเตผ NetXMS-เดฒเตเดเตเดเต เดเตเดฎเดพเดฑเตเดเดฏเตเด เดตเตเดฃเด. เด
เดตเตปเตเดฑเต เดเดเตปเตเดฑเต เดตเดดเดฟ. เด
เดตเดฟเดเตเดฏเดพเดฃเต เดจเดฎเตเดฎเตพ เดคเตเดเดเตเดเตเด.
เดเดชเตเดทเตป เดเดจเตเดจเต, เดเดฑเตเดฑเดตเตเด เดฒเดณเดฟเดคเดฎเดพเดฏเดคเต. เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเดฟเตปเตเดฑเต เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตฝ เดคเตเดฏเดคเดฟ เดตเดฐเตเดฏเตเดณเตเดณ เดฆเดฟเดตเดธเดเตเดเดณเตเดเต เดเดฃเตเดฃเด เดเดฑเตเดฑเดตเตเด เด เดเตเดคเตเดคเตเดณเตเดณ เดคเตเดฏเดคเดฟเดฏเตเดเต เดจเตเดเตเด.
NetXMS เดธเตเตผเดตเดฑเดฟเดจเต เดเดเตเดเดณเตเดเต เดเดทเตโเดเดพเดจเตเดธเตเดค เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเดฟเตปเตเดฑเต เดจเดฟเดฒเดจเดฟเตฝเดชเตเดชเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เด เดฑเดฟเดฏเตเดจเตเดจเดคเดฟเดจเต, เด เดคเต เดเดเตปเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด เดคเต เดธเตเดตเตเดเดฐเดฟเดเตเดเดฃเด. เด เดฒเตเดฒเตเดเตเดเดฟเตฝ, เด เดชเดฐเดพเดฎเตเดฑเตเดฑเตผ เด เดคเดฟเตปเตเดฑเต เด เดญเดพเดตเด เดเดพเดฐเดฃเด เดเตเตผเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ. เด เดคเดฟเดจเดพเตฝ, เดเดเตปเตเดฑเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเตฝ nxagend.conf เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจ เดเดฐเต เดฌเดพเดนเตเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดธเตเดเตเดฐเดฟเดเดเต เดเดเตเดเตพ เดเตเตผเดเตเดเตเดจเตเดจเต HTTPS.CertificateExpireDateSimple, เด เดคเดฟเตฝ เดเดเตเดเตพ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตปเตเดฑเต เดฒเตเดเตเดเต เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเดจเตเดจเต:
ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "servershareNetXMS_CertExpireDateSimple.ps1"
เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเดฒเตเดเต เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดคเดพเดฏเดฟ เดเดฃเดเตเดเดฟเดฒเตเดเตเดเตเดเตเดฎเตเดชเตเตพ, เดจเดฟเดเตเดเตพ เด
เดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตผเดฎเตเดฎเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดเตปเตเดฑเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
#
# NetXMS agent configuration file
# Created by agent installer at Thu Jun 13 11:24:43 2019
#
MasterServers = netxms.corp.testcompany.ru
ConfigIncludeDir = C:NetXMSetcnxagentd.conf.d
LogFile = {syslog}
FileStore = C:NetXMSvar
SubAgent = ecs.nsm
SubAgent = filemgr.nsm
SubAgent = ping.nsm
SubAgent = logwatch.nsm
SubAgent = portcheck.nsm
SubAgent = winperf.nsm
SubAgent = wmi.nsm
ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "servershareNetXMS_CertExpireDateSimple.ps1"
เดเดคเดฟเดจเตเดถเตเดทเด, เดจเดฟเดเตเดเตพ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดธเดเดฐเดเตเดทเดฟเดเตเดเต เดเดเตปเตเดฑเต เดชเตเดจเดฐเดพเดฐเดเดญเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. NetXMS เดเตบเดธเตเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด: เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดคเตเดฑเดเตเดเตเด (เดเดเตปเดฑเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดเดกเดฟเดฑเตเดฑเตเดเตเดฏเตเดฏเตเด), เดเดกเดฟเดฑเตเดฑเตเดเตเดฏเตเดฏเตเด, เดธเตเดตเต&เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเด เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเด, เด เดคเดฟเตปเตเดฑเต เดซเดฒเดฎเดพเดฏเดฟ, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดเดคเตเดคเดจเตเดจเต เดธเดเดญเดตเดฟเดเตเดเตเด. เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเดพเดจเตเดณเตเดณ เดถเดเตเดคเดฟ เดเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเตเตบเดซเดฟเดเดฑเตเดทเตป (เดชเตเตพ > เดเตเตบเดซเดฟเดเดฑเตเดทเตป) เดตเตเดฃเตเดเตเด เดตเดพเดฏเดฟเดเตเดเตเด. เด เดเดเตเดเดเตเดเตพเดเตเดเต เดถเตเดทเด, เดจเดฟเดเตเดเตพเดเตเดเต เดเดเตเดเดณเตเดเต เดเดทเตโเดเดพเดจเตเดธเตเดค เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดเตเตผเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
NetXMS เดเตบเดธเตเดณเดฟเตฝ เดชเตเดเตเด เดกเดพเดฑเตเดฑ เดถเตเดเดฐเดฃ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดเตเดเตพ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเตพ เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเดพเดจเตเด เด เดตเดฟเดเต เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดธเตเดทเตเดเดฟเดเตเดเดพเดจเตเด เดชเตเดเตเดจเตเดจ เดชเดฐเตเดเตเดทเดฃเดพเดคเตเดฎเด เดธเตเตผเดตเตผ (เดญเดพเดตเดฟเดฏเดฟเตฝ, เดเตเตบเดซเดฟเดเดฑเตเดทเดจเตเดถเตเดทเด, เด เดคเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเตเดเดณเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเต เด เตผเดคเตเดฅเดฎเดพเดเตเดเตเดจเตเดจเต). เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต HTTPS.CertificateExpireDateSimple เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเด, เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดชเตเดฐเดฟเดจเตเดชเตเดชเด เดเดฐเต เดตเดฟเดตเดฐเดฃเด เดจเตฝเดเตเด, เดคเดฐเด เดชเตเตผเดฃเตเดฃเดธเดเดเตเดฏเดฏเดพเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเต เดชเตเดณเดฟเดเดเต เดเดเดตเตเดณ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเตเด. เดกเตเดฌเดเตเดเดฟเดเดเต เดเดตเดถเตเดฏเดเตเดเตพเดเตเดเดพเดฏเดฟ, เดเดคเต เดเตเดฑเตเดคเดพเดเตเดเดพเตป เด เตผเดคเตเดฅเดฎเตเดฃเตเดเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, 30 เดธเตเดเตเดเตปเดกเต. เดเดฒเตเดฒเดพเด เดคเดฏเตเดฏเดพเดฑเดพเดฃเต, เดคเตฝเดเตเดเดพเดฒเด เด เดคเต เดฎเดคเดฟ.
เดจเดฟเดเตเดเตพเดเตเดเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด... เดเดฒเตเดฒ, เดเดคเต เดตเดณเดฐเต เดจเตเดฐเดคเตเดคเตเดฏเดพเดฃเต. เดเดชเตเดชเตเตพ, เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดเตเดเตพเดเตเดเต เดเดจเตเดจเตเด เดฒเดญเดฟเดเตเดเดฟเดฒเตเดฒ. เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดคเตเดตเดฐเต เดเดดเตเดคเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ. เด เดตเตเดดเตเด เดคเดฟเดฐเตเดคเตเดคเดพเด. เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดฐเต เดจเดฎเตเดชเตผ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเด, เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตเดจเตเดจเดคเตเดตเดฐเต เดถเตเดทเดฟเดเตเดเตเดจเตเดจ เดฆเดฟเดตเดธเดเตเดเดณเตเดเต เดเดฃเตเดฃเด. เดฒเดญเตเดฏเดฎเดพเดฏเดคเดฟเตฝ เดเดฑเตเดฑเดตเตเด เดเตเดฑเดเตเดเดคเต. เดเดฆเดพเดนเดฐเดฃ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต:
try {
# ะะพะปััะฐะตะผ ะฒัะต ัะตััะธัะธะบะฐัั ะธะท ั
ัะฐะฝะธะปะธัะฐ ัะตััะธัะธะบะฐัะพะฒ
$lmCertificates = @( Get-ChildItem -Recurse -path 'Cert:LocalMachineMy' -ErrorAction Stop )
# ะัะปะธ ัะตััะธัะธะบะฐัะพะฒ ะฝะตั, ะฒะตัะฝััั "10 ะปะตั"
if ($lmCertificates.Count -eq 0) { return 3650 }
# ะะพะปััะฐะตะผ Expiration Date ะฒัะตั
ัะตััะธัะธะบะฐัะพะฒ
$expirationDates = @( $lmCertificates | ForEach-Object { return $_.NotAfter } )
# ะะพะปััะฐะตะผ ะฝะฐะธะฑะพะปะตะต ะฑะปะธะทะบะธะน Expiration Date ะธะท ะฒัะตั
$minExpirationDate = ($expirationDates | Measure-Object -Minimum -ErrorAction Stop ).Minimum
# ะะพะฝะฒะตััะธััะตะผ ะฝะฐะธะฑะพะปะตะต ะฑะปะธะทะบะธะน Expiration Date ะฒ ะบะพะปะธัะตััะฒะพ ะพััะฐะฒัะธั
ัั ะดะฝะตะน ั ะพะบััะณะปะตะฝะธะตะผ ะฒ ะผะตะฝัััั ััะพัะพะฝั
$daysLeft = [Math]::Floor( ($minExpirationDate - [DateTime]::Now).TotalDays )
# ะะพะทะฒัะฐัะฐะตะผ ะทะฝะฐัะตะฝะธะต
return $daysLeft
}
catch {
return -1
}
เดเดคเต เดเดคเตเดชเตเดฒเต เดฎเดพเดฑเตเดจเตเดจเต:
723 เดฆเดฟเดตเดธเด, เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเดพเตป เดเดเดฆเตเดถเด เดฐเดฃเตเดเต เดตเตผเดทเด เดถเตเดทเดฟเดเตเดเตเดจเตเดจเต. เดเดคเต เดฏเตเดเตเดคเดฟเดธเดนเดฎเดพเดฃเต, เดเดพเดฐเดฃเด เดเดพเตป เดเดเตโเดธเตโเดเตเดเตเดเต เดเตเดธเตเดฑเตเดฑเต เดฌเตเดเตเดเดฟเดจเดพเดฏเดฟ เด
เดเตเดคเตเดคเดฟเดเต เดตเตเดฃเตเดเตเด เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเตพ เดจเตฝเดเดฟ.
เดเดคเต เดเดณเตเดชเตเดชเดฎเตเดณเตเดณ เดเดชเตเดทเดจเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดเดฐเตเดชเดเตเดทเต, เดเดฐเตเดเตเดเดฟเดฒเตเด เดเดคเดฟเตฝ เดธเดเดคเตเดชเตเดคเดฐเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เดชเดเตเดทเต เดเดเตเดเตพ เดเตเดเตเดคเตฝ เดเดเตเดฐเดนเดฟเดเตเดเต. เดธเตเตผเดตเดฑเดฟเดฒเต เดเดฒเตเดฒเดพ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเดณเตเดเตเดฏเตเด เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต, เดชเตเดฐเต เดชเตเดฐเดเดพเดฐเด, เดเดฐเตเดจเตเดจเดฟเดจเตเด เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตเดจเตเดจเดคเตเดตเดฐเต เดถเตเดทเดฟเดเตเดเตเดจเตเดจ เดฆเดฟเดตเดธเดเตเดเดณเตเดเต เดเดฃเตเดฃเด เดเดพเดฃเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดฎเดคเดฒ เดเดเตเดเตพ เดธเตเดตเดฏเด เดธเดเตเดเดฎเดพเดเตเดเตเดจเตเดจเต.
เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดเดชเตเดทเตป, เดเตเดฑเดเตเดเตเดเตเดเดฟ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฃเต.
เดเดเตเดเตพ เดตเตเดฃเตเดเตเด เดเดเตปเตเดฑเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดกเดฟเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดเดฏเตเด เด เดตเดฟเดเต เดเดเตโเดธเตโเดฑเตเดฑเตเดฃเตฝ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดณเตเดณ เดฒเตเดจเดฟเดจเต เดชเดเดฐเด เดฎเดฑเตเดฑเต เดฐเดฃเตเดเตเดฃเตเดฃเด เดเดดเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต:
ExternalList = HTTPS.CertificateNames: powershell.exe -File "serversharenetxms_CertExternalNames.ps1"
ExternalParameter = HTTPS.CertificateExpireDate(*): powershell.exe -File "serversharenetxms_CertExternalParameter.ps1" -CertificateId "$1"
ะ เดฌเดพเดนเตเดฏ เดชเดเตเดเดฟเด เดเดเตเดเตพเดเตเดเต เดธเตเดเตเดฐเดฟเดเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเดญเดฟเดเตเดเตเดจเตเดจเต. เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดชเตเดฐเตเดเดณเตเดณเตเดณ เดธเตเดเตเดฐเดฟเดเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต. เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเต เด เดตเดฐเดฟเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดเตเดเตพเดเตเดเต เดฒเดญเดฟเดเตเดเตเด. เดชเดเตเดเดฟเดเดฏเตเดเต เดชเตเดฐเต - HTTPS.เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดชเตเดฐเตเดเตพ.
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต NetXMS_CertNames.ps1:
#ะกะฟะธัะพะบ ะฒะพะทะผะพะถะฝัั
ะธะผะตะฝ ัะตััะธัะธะบะฐัะพะฒ
$nameTypeList = @(
[System.Security.Cryptography.X509Certificates.X509NameType]::SimpleName,
[System.Security.Cryptography.X509Certificates.X509NameType]::DnsName,
[System.Security.Cryptography.X509Certificates.X509NameType]::DnsFromAlternativeName,
[System.Security.Cryptography.X509Certificates.X509NameType]::UrlName,
[System.Security.Cryptography.X509Certificates.X509NameType]::EmailName,
[System.Security.Cryptography.X509Certificates.X509NameType]::UpnName
)
#ะัะตะผ ะฒัะต ัะตััะธัะธะบะฐัั, ะธะผะตััะธะต ะทะฐะบััััะน ะบะปัั
$certList = @( Get-ChildItem -Path 'Cert:LocalMachineMy' | Where-Object { $_.HasPrivateKey -eq $true } )
#ะัะพั
ะพะดะธะผ ะฟะพ ัะฟะธัะบั ัะตััะธัะธะบะฐัะพะฒ, ัะพัะผะธััะตะผ ัััะพะบั "ะะผั ัะตััะธัะธะบะฐัะฐ - ะะฐัะฐ - Thumbprint" ะธ ะฒะพะทะฒัะฐัะฐะตะผ ะตั
foreach ($cert in $certList) {
$name = '(unknown name)'
try {
$thumbprint = $cert.Thumbprint
$dateExpire = $cert.NotAfter
foreach ($nameType in $nameTypeList) {
$name_temp = $cert.GetNameInfo( $nameType, $false)
if ($name_temp -ne $null -and $name_temp -ne '') {
$name = $name_temp;
break;
}
}
Write-Output "$($name) - $($dateExpire.ToString('dd.MM.yyyy')) - [T:$($thumbprint)]"
}
catch {
Write-Error -Message "Error processing certificate list: $($_.Exception.Message)"
}
}
เดเดคเดฟเดจเดเด เด เดเดคเตเดคเต เดฌเดพเดนเตเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดเดเตโเดธเตโเดฑเตเดฑเตเดฃเตฝ เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเตพ เดตเดฐเดฟเดเตพ เดเตปเดชเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดเตเดเตโเดชเตเดเตเดเดฟเตฝ เดเดฐเตเดจเตเดจเดฟเดจเตเด เดเดฐเต เดเดฃเตเดฃเด เดฆเดฟเดตเดธเดเตเดเตพ เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเด. เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเดฟเตปเตเดฑเต เดตเดฟเดฐเดฒเดเดฏเดพเดณเดฎเดพเดฃเต เดเดกเตปเตเดฑเดฟเดซเดฏเตผ. HTTPS.CertificateExpireDate-เตฝ เด เดตเตเดฐเดฟเดฏเตปเตเดฑเดฟเตฝ เดเดฐเต เดจเดเตเดทเดคเตเดฐเดเดฟเดนเตเดจเด (*) เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด. เดเดเตเดเดณเตเดเต CertificateId เดฎเดพเดคเตเดฐเด, เดฌเดพเดนเตเดฏ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต.
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต NetXMS_CertExpireDate.ps1:
#ะะฟัะตะดะตะปัะตะผ ะฒั
ะพะดััะธะน ะฟะฐัะฐะผะตัั $CertificateId
param (
[Parameter(Mandatory=$false)]
[String]$CertificateId
)
#ะัะพะฒะตัะบะฐ ะฝะฐ ัััะตััะฒะพะฒะฐะฝะธะต
if ($CertificateId -eq $null) {
Write-Error -Message "CertificateID parameter is required!"
return
}
#ะะพ Thumbprint ะธะท ัััะพะบะธ ะฒ $CertificateId ะธัะตะผ ัะตััะธัะธะบะฐั ะธ ะพะฟัะตะดะตะปัะตะผ ะตะณะพ Expiration Date
$certId = $CertificateId;
try {
if ($certId -match '^.*[T:(?<Thumbprint>[A-Z0-9]+)]$') {
$thumbprint = $Matches['Thumbprint']
$certificatePath = "Cert:LocalMachineMy$($thumbprint)"
if (Test-Path -PathType Leaf -Path $certificatePath ) {
$certificate = Get-Item -Path $certificatePath;
$certificateExpirationDate = $certificate.NotAfter
$certificateDayToLive = [Math]::Floor( ($certificateExpirationDate - [DateTime]::Now).TotalDays )
Write-Output "$($certificateDayToLive)";
}
else {
Write-Error -Message "No certificate matching this thumbprint found on this server $($certId)"
}
}
else {
Write-Error -Message "CertificateID provided in wrong format. Must be FriendlyName [T:<thumbprint>]"
}
}
catch {
Write-Error -Message "Error while executing script: $($_.Exception.Message)"
}
เดธเตเตผเดตเดฑเดฟเตปเตเดฑเต เดกเดพเดฑเตเดฑ เดเดณเดเตเดทเตป เดเตเตบเดซเดฟเดเดฑเตเดทเดจเดฟเตฝ, เดเดเตเดเตพ เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต. เดชเดฐเดพเดฎเตเดฑเตเดฑเดฑเดฟเตฝ เดเดเตเดเตพ เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดจเตเดจเต HTTPS.CertificateExpireDate(*) เดชเดเตเดเดฟเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต, (เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด!) เดจเดเตเดทเดคเตเดฐเดเดฟเดนเตเดจเด เดฎเดพเดฑเตเดฑเตเด {instance}. เดเดฐเต เดธเดเดญเดตเดคเตเดคเดฟเดจเตเด (เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต) เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดเตเดฃเตเดเตผ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เด เดชเตเดฐเดงเดพเดจ เดชเตเดฏเดฟเตปเตเดฑเต เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเด. เดฌเดพเดเตเดเดฟเดฏเตเดณเตเดณเดต เดฎเตเดฎเตเดชเดคเตเดคเต เดชเดคเดฟเดชเตเดชเดฟเดฒเตเดจเตเดจเดชเตเดฒเต เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต:
เดเตเดฃเตเดเดฑเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเตปเดธเตโเดฑเตเดฑเตปเดธเต เดกเดฟเดธเตโเดเดตเดฑเดฟ เดเดพเดฌเดฟเตฝ เดจเดฟเดเตเดเตพ เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตปเตเดฑเต เดฒเดฟเดธเตเดฑเตเดฑเต เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดเดฏเตเด เดฒเดฟเดธเตเดฑเตเดฑเต เดจเตเดฏเดฟเด เดซเตเตฝเดกเดฟเตฝ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเดณเตเดเต เดเดเตโเดธเตโเดฑเตเดฑเตเดฃเตฝ เดฒเดฟเดธเตโเดฑเตเดฑเดฟเตปเตเดฑเต เดชเตเดฐเต เดจเตฝเดเตเด - HTTPS.CertificateNames.
เดเดเดฆเตเดถเด เดคเดฏเตเดฏเดพเดฑเดพเดฃเต, เด เตฝเดชเตเดชเด เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เด เดธเดพเดงเตเดฏเดฎเดพเดฃเตเดเตเดเดฟเตฝ เดตเตเดเตเดเตเดเตเดชเตเดชเต > เดเตเตบเดซเดฟเดเดฑเตเดทเดจเตเด เดตเตเดเตเดเตเดเตเดชเตเดชเตเด > เดเตปเดธเตเดฑเตเดฑเตปเดธเต เดกเดฟเดธเตเดเดตเดฑเดฟ เดจเดฟเตผเดฌเดจเตเดงเดฟเดเตเดเตเด. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดธเดพเดงเตเดคเดฏเตเดณเตเดณ เดเดพเดฒเดฏเดณเดตเตเดเดณเตเดณเตเดณ เดเดเตเดเดณเตเดเต เดเดฒเตเดฒเดพ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเดณเตเด เดเดเตเดเตพเดเตเดเต เดฒเดญเดฟเดเตเดเตเด:
เดจเดฟเดจเดเตเดเตเดจเตเดคเดพเดฃเต เดเดตเดถเตเดฏเด? เดถเดฐเดฟ, เด
เดคเต, เดชเตเตผเดซเตเดเตเดทเดจเดฟเดธเดคเตเดคเดฟเตปเตเดฑเต เดชเตเดดเต เดฎเดพเดคเตเดฐเดฎเต เดเตเดฃเตเดเดฑเดฟเตปเตเดฑเต เดชเตเดฐเดฟเดฒเตเดณเตเดณ เด เด
เดจเดพเดตเดถเตเดฏ เดคเดณเตเดณเดตเดฟเดฐเดฒเดฟเดจเต เดธเดเตเดเดเดเดฐเดฎเดพเดฏ เดเดฃเตเดฃเตเดเดณเตเดเต เดจเตเดเตเดเต, เดฒเตเดเดจเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดพเตป เดเดจเตเดจเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดเดคเต เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต, เดเตเดฃเตเดเตผ เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟเดเตพ เดตเตเดฃเตเดเตเด เดคเตเดฑเดจเตเดจเต เดเตปเดธเตเดฑเตเดฑเตปเดธเต เดกเดฟเดธเตเดเดตเดฑเดฟ เดเดพเดฌเดฟเตฝ, "เดเตปเดธเตโเดฑเตเดฑเตปเดธเต เดกเดฟเดธเตเดเดตเดฑเดฟ เดซเดฟเตฝเดเตเดเตผ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต" เดซเตเตฝเดกเดฟเตฝ, เดเดดเตเดคเดฟเดฏเดคเต เดเตเตผเดเตเดเตเด
instance = $1;
if (instance ~= "^(.*)s-s[T:[a-zA-Z0-9]+]$")
{
return %(true, instance, $1);
}
return true;
เดเดคเต เดคเดฎเตเดชเตเดชเตเดฐเดฟเตปเตเดฑเต เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตเดฏเตเด:
เด
เดคเต เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตโเดคเดคเดพเดฏเดฟ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดตเดฟเดตเดฐเดฃ เดซเตเตฝเดกเดฟเดฒเต เดชเตเดคเตเดตเดพเดฏ เดเดพเดฌเดฟเตฝ, CertificateExpireDate: {instance} เดเดจเตเดจเดคเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเด CertificateExpireDate: {instance-name}:
เด
เดคเตเดฐเดฏเตเดฏเตเดณเตเดณเต, เดเดเตเดตเดฟเตฝ เดเตเดกเดฟเดชเดฟเดตเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดซเดฟเดจเดฟเดทเต เดฒเตเตป:
เดธเตเดจเตเดฆเดฐเตเดฏเดฎเดฒเตเดฒเต?
เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตเดฎเตเดชเตเตพ เดเดฎเตเดฏเดฟเตฝ เดตเดดเดฟ เด เดฒเตเตผเดเตเดเตเดเตพ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด เดตเดถเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต.
1. เดเตเดฃเตเดเตผ เดฎเตเดฒเตเดฏเด เดเดเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเดฟเดฏ เดเดฟเดฒ เดชเดฐเดฟเดงเดฟเดฏเดฟเดฒเตเดเตเดเต เดเตเดฑเดฏเตเดฎเตเดชเตเตพ เด เดคเต เดธเดเตเดตเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดฆเตเดฏเด เดจเดฎเตเดฎเตพ เดเดฐเต เดเดตเตปเตเดฑเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. IN เดเดตเดจเตเดฑเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดชเตเดฒเตเดณเตเดณ เดชเตเดฐเตเดเดณเตเดณเตเดณ เดฐเดฃเตเดเต เดชเตเดคเดฟเดฏ เดเตเดเดชเตเดฒเตเดฑเตเดฑเตเดเตพ เดเดฃเตเดเดพเดเตเดเดพเด CertificateExpireDate_Threshold_Activate เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเดฟเดฒเดฏเตเดเตเดชเตเดชเด:
เดธเดฎเดพเดจเดฎเดพเดฏ CertificateExpireDate_Threshold_Deactivate เดธเดพเดงเดพเดฐเดฃ เดจเดฟเดฒเดฏเตเดเต.
2. เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดเตเดฃเตเดเตผ เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ เดเตเดฐเตเดทเตเตพเดกเตเดธเต เดเดพเดฌเดฟเตฝ เดคเตเดฐเตเดทเตเตพเดกเต เดธเดเตเดเดฎเดพเดเตเดเตเด:
เดเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเด เดเดตเตปเตเดฑเตเดเตพ CertificateExpireDate_Threshold_Activate, CertificateExpireDate_Threshold_Deactivate เดเดจเตเดจเดฟเดต เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดฟเดเดคเตเดคเต, เดธเดพเดฎเตเดชเดฟเดณเตเดเดณเตเดเต เดเดฃเตเดฃเด (เดธเดพเดฎเตเดชเดฟเดณเตเดเตพ) 1 เดเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเด (เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเต เด เดเตเดฃเตเดเดฑเดฟเดจเต เดเตเดเตเดคเตฝ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เด
เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ), เดฎเตเดฒเตเดฏเด 30 เดเดฃเต (เดฆเดฟเดตเดธเดเตเดเตพ), เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเด, เดเตเดเดพเดคเต, เดเดตเตปเตเดฑเต เดเดตเตผเดคเตเดคเดจ เดธเดฎเดฏเด. เดเตฝเดชเดพเดฆเดจเดคเตเดคเดฟเดฒเต เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเตพเดเตเดเดพเดฏเดฟ, เดเดพเตป เดเดคเต เดเดฐเต เดฆเดฟเดตเดธเดคเตเดคเดฟเตฝ เดเดฐเดฟเดเตเดเตฝ (86400 เดธเตเดเตเดเตปเดกเต) เดธเดเตเดเตเดเดฐเดฟเดเตเดเต, เด
เดฒเตเดฒเดพเดคเตเดคเดชเดเตเดทเด เดจเดฟเดเตเดเตพเดเตเดเต เด
เดฑเดฟเดฏเดฟเดชเตเดชเตเดเดณเดฟเตฝ เดฎเตเดเตเดเดพเด (เดเดคเต เดเดฐเดฟเดเตเดเตฝ เดธเดเดญเดตเดฟเดเตเดเต, เด
เดเตเดเดจเต เดตเดพเดฐเดพเดจเตเดคเตเดฏเดคเตเดคเดฟเตฝ เดฎเตเดฏเดฟเตฝเดฌเตเดเตเดธเต เดจเดฟเดฑเดเตเดเดฟเดฐเตเดจเตเดจเต). เดกเตเดฌเดเตเดเดฟเดเดเต เดธเดฎเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, 60 เดธเตเดเตเดเตปเดกเต เดคเดพเดดเตเดฏเดพเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดฏเตเดเตเดคเดฟเดธเดนเดฎเดพเดฃเต.
3. เตฝ เดเดเตเดทเตป เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดคเตเดชเตเดฒเตเดณเตเดณ เดเดฐเต เด เดฑเดฟเดฏเดฟเดชเตเดชเต เดเดคเตเดคเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเตเด:
เดเดตเดฏเตเดฒเตเดฒเดพเด %m, %S เดฎเตเดคเดฒเดพเดฏเดต. - เดเดเตเดเดณเตเดเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเตเดฒเตเดฏเดเตเดเตพ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดเตเดเตเดจเตเดจ เดฎเดพเดเตเดฐเตเดเตพ. เด
เดตเดฏเดฟเตฝ เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
4. เด เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เดฎเตเดฎเตเดชเดคเตเดคเต เดชเตเดฏเดฟเตปเตเดฑเตเดเตพ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเต เดเดตเตปเตเดฑเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต เดจเดฏเด เดเดฐเต เด เดฒเดพเดฑเด เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเดฐเต เดเดคเตเดคเต เด เดฏเดฏเตเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดจเดฟเดฏเดฎเด เดธเตเดทเตเดเดฟเดเตเดเตเด:
เดเดเตเดเตพ เดจเดฏเด เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเต, เดเดฒเตเดฒเดพเด เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเดตเตเดจเตเดจเดคเดพเดฃเต. เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดจเดฎเตเดเตเดเต เดคเตเดฐเตเดทเตเตพเดกเต เดเตเดเตเดคเดฒเดพเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเด. เดเตปเตเดฑเต เดเดฑเตเดฑเดตเตเด เด เดเตเดคเตเดคเตเดณเตเดณ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต 723 เดฆเดฟเดตเดธเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตเด, เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดเดพเตป เด เดคเต 724 เดเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดเตเดเตพเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด เดฒเดพเดฑเด เดฒเดญเดฟเดเตเดเตเด:
เด เดเดฎเตเดฏเดฟเตฝ เด
เดฑเดฟเดฏเดฟเดชเตเดชเตเด:
เด
เดคเตเดฒเตเดฒเดพเด เดเดชเตเดชเตเตพ เดเดฑเดชเตเดชเดพเดฃเต. เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดฐเต เดกเดพเดทเตโเดฌเตเตผเดกเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเดจเตเด เดเตเดฐเดพเดซเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเดจเตเด เดธเดพเดงเดฟเดเตเดเตเด, เดเดจเตเดจเดพเตฝ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเตพเดเตเดเต เดเดคเต เดเดฐเต เดชเดฐเดฟเดงเดฟเดตเดฐเต เด
เตผเดคเตเดฅเดถเตเดจเตเดฏเดตเตเด เดตเดฟเดฐเดธเดตเตเดฎเดพเดฏ เดจเตเตผเดฐเตเดเดเดณเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เดชเตเดฐเตเดธเดธเดฑเดฟเตปเตเดฑเตเดฏเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดกเดฟเตปเตเดฑเตเดฏเต เดเตเดฐเดพเดซเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ. เดชเดเตเดทเต, เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดเตเดคเตฝ เดธเดฎเดฏเด.
เด
เดตเดฒเดเดฌเด: www.habr.com