首页 > 解决方案 > PSCredential 不包含名为“GetNetworkCredential”的方法

问题描述

我有一个 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

标签: .netwindowspowershell

解决方案


推荐阅读