我有一个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都可以正常工作,但是在服务器2上运行decryptor.ps1会出现问题。
在服务器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