0

所以我有一个存储在文本文件中的加密字符串,我可以一次又一次地调用它,这是我的 SMTP 智能主机的密码。这是通过以下方式创建的:

Read-Host "Enter the Password:" -AsSecureString | ConvertFrom-SecureString | Out-File C:\EncPW.bin

我现在需要以某种方式将它与 a 一起传递给函数$username-Credential参数Send-MailMessage。我想我需要把它变成 PSCredential 格式。但我被困住了!

$password = cat C:\encPW.bin |  ConvertTo-SecureString
$password

$cred = New-Object -typename System.Management.Automation.PSCredential -argumentlist      $username,$password

到目前为止我有这个,但是当我打印它输出时它是 $passwordSystem.Security.SecureString并且我得到一个错误:

net_io_connectionclosed

当它尝试 SMTP 发送时。

干杯

呼叫到 SMTP 发送:

Send-MailMessage -from "TestPS@mydomain.co.uk" -To "someone@mydomain.co.uk" -Subject "Daily Report" -Body "Open Attachment for Report" -smtpServer 85.119.248.54 -Attachments "C:\WSB_Reports\DailyReport.txt" -Credential $cred
4

1 回答 1

2

假设您的用户名和密码正确,您采用的方法似乎是正确的。您的用户名是否以域为前缀,例如domain\username?我支持通过以下方式尝试使用手动提供的凭据的命令的建议Get-Credential

$cred = Get-Credential

如果您需要验证从安全字符串返回的密码是否正确,可以这样显示:

$bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password)
$str =  [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr)
[System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
$str
于 2012-12-21T18:16:55.443 回答