Один из наших серверов должен запускать сценарии с определенными параметрами, к сожалению, он прекратил создавать закрытые ключи, и я недолго задерживался на этой проблеме.Каждый раз, когда я запускаю сценарий с одинаковыми условиями (одна и та же учетная запись, сервер, сценарий, приложение), он работает, но в большинстве запусков, запускаемых из приложения ServiceDesk, он заканчивается ошибкой.
И самое странное в ситуации, когда скрипт работал без изменений годами.
Я уже пытался создать фоновый процесс с созданием закрытого ключа, запустить скрипт под разными пользователями AD, сменить провайдера в строке ProviderName, найти любые решения в сети.
Сервер "Windows Server 2012 R2", версия PS 4
Часть кода, в которой возникает проблема:
$PrivateKey = New-Object -ComObject "X509Enrollment.CX509PrivateKey"
$PrivateKey.ProviderName = "Microsoft Enhanced Cryptographic Provider v1.0"
$PrivateKey.ExportPolicy = 0x1
$PrivateKey.KeyUsage = 0xffffff
$PrivateKey.KeySpec = 0x1
$PrivateKey.KeyProtection = 0x0
$PrivateKey.Length = 2048
$PrivateKey.MachineContext = $False
$PrivateKey.Create()
Ошибка:
Exception calling "Create" with "0" argument(s): "CertEnroll::CX509PrivateKey::
Create: The system cannot find the file specified. 0x80070002 (WIN32: 2 ERROR_F
ILE_NOT_FOUND)"
At C:\Scripts\SD\VPN\ca_renew_cert_company.ps1:125 char:5
+ $PrivateKey.Create()
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
Iнужна любая информация о том, как решить проблему, какие-либо ссылки на метод работы, что-нибудь полезное.