kat*_*van 2 powershell credentials
我希望将电子邮件发送给多个收件人,同时我也不想提示输入用户名和密码.所以我使用了下面的字符串转换,但后来我面临以下错误消息.
你能否建议你的答案来纠正这个问题?
[string] [ValidateNotNullOrEmpty()] $secpasswd = "Q$$777LV"
$secpasswd = ConvertTo-SecureString -String "Q$$777LV" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential (“test”, $secpasswd)
Run Code Online (Sandbox Code Playgroud)
错误信息:
New-Object:找不到"PSCredential"的重载和参数计数:"2"
您的第一个语句$secpasswd生成类型的变量[string].因此,SecureString使用第二个语句创建的对象会自动转换为字符串.正因为如此,这两个陈述
[string]$secpasswd = "something"
$secpasswd = ConvertTo-SecureString -String "something" -AsPlainText -Force
Run Code Online (Sandbox Code Playgroud)
实际上是一样的
$secpasswd = 'System.Security.SecureString'
Run Code Online (Sandbox Code Playgroud)
由于PSCredential构造函数需要一个字符串和一个SecureString对象,而不是两个字符串,因此会抛出您观察到的错误.
要解决此问题,请不要强制变量为类型[string]:
[ValidateNotNullOrEmpty()]$secpasswd = "something"
$secpasswd = ConvertTo-SecureString -String $secpasswd -AsPlainText -Force
$mycreds = New-Object Management.Automation.PSCredential ("test", $secpasswd)
Run Code Online (Sandbox Code Playgroud)
或者为明文和安全字符串密码使用不同的变量:
[string][ValidateNotNullOrEmpty()]$passwd = "something"
$secpasswd = ConvertTo-SecureString -String $passwd -AsPlainText -Force
$mycreds = New-Object Management.Automation.PSCredential ("test", $secpasswd)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12369 次 |
| 最近记录: |