我正在尝试发送一个文件到电子邮件。我找到了这段代码,它起作用了,但是我想自动添加密码,有什么解决方案吗??
$MyEmail = "tests21@gmail.com"
$Password = "TEST2132"
$SMTP= "smtp.gmail.com"
$To = "TEST212@gmail.com"
$Subject = "LOG FILE!"
$Creds = (Get-Credential -Credential "$MyEmail")
$attachment = "C:\TEST.txt"
Start-Sleep 2
Send-MailMessage -To $to -From $MyEmail -Subject $Subject -Attachment $attachment -SmtpServer $SMTP -Credential $Creds -UseSsl -Port 587 -DeliveryNotificationOption never

发布于 2021-12-26 06:23:56
非安全方法
下面是如何从密码字符串创建凭据对象。
# Some email credentials
$username = 'Username'
$password = 'Password' | ConvertTo-SecureString -AsPlainText -Force
$Creds = [PSCredential]::New($username,$password)正如注释中所指出的,直接在脚本中设置密码是不安全的,因为任何能够访问脚本的人都会看到密码。
秘密管理模块方法
这个方法需要一些准备,但在我看来是最好的,因为密码是从一个秘密的保险库中检索出来的,而不是在您的脚本中随时可用。
先决条件
模块
安装以下模块
Install-Module Microsoft.PowerShell.SecretManagement
Install-Module SecretManagement.JustinGrote.CredMan保险库
创建一个保险库来存储电子邮件凭据,并在未来可能会有很多其他的。
Register-SecretVault -ModuleName SecretManagement.JustinGrote.CredMan -Name 'Default'把证件保存到保险库里。
$username = 'Username'
$password = 'Password' | ConvertTo-SecureString -AsPlainText -Force
$Creds = [PSCredential]::New($username, $password)
Set-Secret -Name 'SomeEmailCreds' -Secret $Creds -Vault Default如何使用
一旦每个先决条件都被填充,您就可以使用Get-Secret语句从本地保险库获得凭据。Set-Secret不应该出现在脚本中,只有在需要在某个时候更新凭据时,才应该使用它。
$Creds = Get-Secret -Vault Default -Name 'SomeEmailCreds'备注
注意,保险库是“每个用户”和“每台机器”,因此应该在用户和运行它的机器上创建它。
SecretManagement还有比贾斯汀格罗特的CredsMan 1更多的模块,这些模块使用各种不同的金库,因此可以实现Azure密钥库、1 1password等。
https://stackoverflow.com/questions/70483815
复制相似问题