У меня есть сценарий PowerShell, который шифрует и сохраняет пароль в файле XML - это работает нормально. Другой сценарий импортирует этот XML и расшифровывает пароль для передачи другому процессу. Эти сценарии прекрасно работают на одном сервере (сервер 1), но не на другом (сервер 2).
Оба сервера, на которых я работаю, работают под управлением Windows Server 2016 и работают под управлением PowerShell версии 5.1.14393.3053 - но сценарий не выполняетсяна сервере 2, но не на сервере 1. Я попробовал процесс, используя другого администратора, но получил ту же ошибку.
Вот как выглядят мои скрипты:
encryptor.ps1 (генерируетxml):
$cred = Get-Credential
$cred | Export-CliXml -Path 'D:\cred.xml'
decryptor.ps1 (это сценарий, который не работает):
$credential = Import-CliXml -Path 'D:\cred.xml'
$PGUser=$credential.UserName
$PGPwd=$credential.GetNetworkCredential().Password #This causes error shown below
На обоих серверах работает encryptor.ps1, но работает decryptor.ps1. проблема на сервере 2.
На сервере 1 decryptor.ps1 работает нормально, и я могу получить доступ к переменной $PGPwd
На сервере 2, когда запускается decryptor.ps1, я вижуэта ошибка:
Method invocation failed because [Deserialized.System.Management.Automation.PSCredential] does not contain a method named 'GetNetworkCredential'.
At D:\infa_shared\DGDR\RunDump.ps1:3 char:1
+ $PGPwd=$credential.GetNetworkCredential().Password
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (GetNetworkCredential:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound