我希望将电子邮件发送给多个收件人,而且我也不想提示输入用户名和密码。所以我使用了下面的字符串转换,但是我面对以下错误消息。
你能否提出你的答案来解决这个问题?
[string] [ValidateNotNullOrEmpty()] $secpasswd = "Q$$777LV"
$secpasswd = ConvertTo-SecureString -String "Q$$777LV" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential (“test”, $secpasswd)
错误讯息:
New-Object:找不到“PSCredential”的重载和参数计数:“2”
答案 0 :(得分:7)
您的第一个语句使populateList(node)
if(node == null) return
populateList(node->left)
if (node->left == null && node->right == null)
pushToList(node)
return
populateList(node->right)
成为$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)
答案 1 :(得分:0)
如果为安全字符串定义了数据类型,则不会出现此错误。
[String] [ValidateNotNullOrEmpty()] $secpasswd = "Q$$777LV"
[SecureString] $secpasswd = ConvertTo-SecureString -String "Q$$777LV" -AsPlainText -Force
[PSCredential] $mycreds = New-Object System.Management.Automation.PSCredential (“test”, $secpasswd)