.net PSCredential不包含名为';GetNetworkCredential';

.net PSCredential不包含名为';GetNetworkCredential';,.net,windows,powershell,.net,Windows,Powershell,我有一个PowerShell脚本,可以加密密码并将其存储在XML文件中—运行良好。另一个脚本导入该XML并解密要传递给另一个进程的密码。此脚本在一台服务器(服务器1)上运行良好,但在另一台服务器(服务器2)上失败 我运行的两台服务器都是Windows Server 2016和运行PowerShell版本5.1.14393.3053-但是脚本在服务器2上失败,但在服务器1上没有。我使用另一个管理员用户尝试了该过程,但出现了相同的错误 以下是我的脚本的外观: encryptor.ps1(生成xml)

我有一个PowerShell脚本,可以加密密码并将其存储在XML文件中—运行良好。另一个脚本导入该XML并解密要传递给另一个进程的密码。此脚本在一台服务器(服务器1)上运行良好,但在另一台服务器(服务器2)上失败

我运行的两台服务器都是Windows Server 2016和运行PowerShell版本5.1.14393.3053-但是脚本在服务器2上失败,但在服务器1上没有。我使用另一个管理员用户尝试了该过程,但出现了相同的错误

以下是我的脚本的外观:

encryptor.ps1(生成xml):

decryptor.ps1(这是失败的脚本):

在这两台服务器上,运行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

如果查看错误中的类型名称,您将看到它前面已经反序列化了,因为它已经被导出,然后再次导入,所以可以说它不再是“活动对象”。您需要手动解除保存密码的安全字符串的保护:如果您在server1上创建并导出(加密)凭据到xml文件,则只能在server1上使用创建凭据时使用的相同用户帐户对其进行解密。要加密和解密,你需要一个密钥,如果你记得的话,你从来没有提供过。因此,powershell在后台做了一些事情(我从未完全研究过),使用您的帐户和机器信息加密creds。如果您将文件移动到另一台计算机,则第二台计算机上的密钥将丢失,因此无法解密。我正在生成一个新的xml以在服务器2上运行,因此它有必要的计算机密钥进行解密。虽然我刚刚意识到我正在加密的密码包含“&”,所以这可能是导致我的问题的原因。如果我发现了什么,我会更新。我不认为&是问题所在,因为我在服务器1上完成了整个过程,并且没有导致错误
$credential = Import-CliXml -Path 'D:\cred.xml' 
$PGUser=$credential.UserName 
$PGPwd=$credential.GetNetworkCredential().Password #This causes error shown below
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