Powershell 新对象:找不到“;的重载;PSCredential”;参数计数:“;2”;
我希望一封电子邮件发送给多个收件人,而且我不想提示输入用户名和密码。所以我使用了下面的字符串转换,但是我面临下面的错误消息 你能提出你的答案来纠正这个问题吗Powershell 新对象:找不到“;的重载;PSCredential”;参数计数:“;2”;,powershell,credentials,Powershell,Credentials,我希望一封电子邮件发送给多个收件人,而且我不想提示输入用户名和密码。所以我使用了下面的字符串转换,但是我面临下面的错误消息 你能提出你的答案来纠正这个问题吗 [string] [ValidateNotNullOrEmpty()] $secpasswd = "Q$$777LV" $secpasswd = ConvertTo-SecureString -String "Q$$777LV" -AsPlainText -Force $mycreds = New-Object System.Managem
[string] [ValidateNotNullOrEmpty()] $secpasswd = "Q$$777LV"
$secpasswd = ConvertTo-SecureString -String "Q$$777LV" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential (“test”, $secpasswd)
错误消息:
新对象:找不到“PSCredential”和参数计数的重载:“2”
您的第一条语句使
$secpasswd
成为[string]
类型的变量。因此,使用第二条语句创建的SecureString
对象将自动转换为字符串。正因为如此,这两种说法
[string]$secpasswd = "something"
$secpasswd = ConvertTo-SecureString -String "something" -AsPlainText -Force
实际上与
$secpasswd = 'System.Security.SecureString'
由于PSCredential
构造函数需要一个字符串和一个SecureString
对象,而不是两个字符串,因此它会抛出您观察到的错误
要解决此问题,请不要将变量强制为类型[string]
:
[ValidateNotNullOrEmpty()]$secpasswd = "something"
$secpasswd = ConvertTo-SecureString -String $secpasswd -AsPlainText -Force
$mycreds = New-Object Management.Automation.PSCredential ("test", $secpasswd)
或者对明文密码和安全字符串密码使用不同的变量:
[string][ValidateNotNullOrEmpty()]$passwd = "something"
$secpasswd = ConvertTo-SecureString -String $passwd -AsPlainText -Force
$mycreds = New-Object Management.Automation.PSCredential ("test", $secpasswd)
如果为安全字符串定义了数据类型,则不会出现此错误
[String] [ValidateNotNullOrEmpty()] $secpasswd = "Q$$777LV"
[SecureString] $secpasswd = ConvertTo-SecureString -String "Q$$777LV" -AsPlainText -Force
[PSCredential] $mycreds = New-Object System.Management.Automation.PSCredential (“test”, $secpasswd)