首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入密码-credential

导入密码-credential
EN

Stack Overflow用户
提问于 2021-12-26 02:03:49
回答 1查看 225关注 0票数 0

我正在尝试发送一个文件到电子邮件。我找到了这段代码,它起作用了,但是我想自动添加密码,有什么解决方案吗??

代码语言:javascript
复制
$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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-26 06:23:56

非安全方法

下面是如何从密码字符串创建凭据对象。

代码语言:javascript
复制
# Some email credentials
$username = 'Username'
$password = 'Password' | ConvertTo-SecureString -AsPlainText -Force
$Creds = [PSCredential]::New($username,$password)

正如注释中所指出的,直接在脚本中设置密码是不安全的,因为任何能够访问脚本的人都会看到密码。

秘密管理模块方法

这个方法需要一些准备,但在我看来是最好的,因为密码是从一个秘密的保险库中检索出来的,而不是在您的脚本中随时可用。

先决条件

模块

安装以下模块

代码语言:javascript
复制
Install-Module Microsoft.PowerShell.SecretManagement
Install-Module SecretManagement.JustinGrote.CredMan

保险库

创建一个保险库来存储电子邮件凭据,并在未来可能会有很多其他的。

代码语言:javascript
复制
Register-SecretVault -ModuleName SecretManagement.JustinGrote.CredMan -Name 'Default'

把证件保存到保险库里。

代码语言:javascript
复制
$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不应该出现在脚本中,只有在需要在某个时候更新凭据时,才应该使用它。

代码语言:javascript
复制
$Creds = Get-Secret -Vault Default -Name 'SomeEmailCreds'

备注

注意,保险库是“每个用户”和“每台机器”,因此应该在用户和运行它的机器上创建它。

SecretManagement还有比贾斯汀格罗特的CredsMan 1更多的模块,这些模块使用各种不同的金库,因此可以实现Azure密钥库、1 1password等。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70483815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档