powershell - Power Shell 脚本 SMTP 电子邮件问题
问题描述
1) 如何在此脚本中存储我的凭据 - 它提示我输入凭据
2)最后两行应该在底部还是在参数之前?我收到此错误 - 我认为我没有正确传递我的凭据
Send-MailMessage:无法解析远程名称:'System.Net.Mail.SmtpClient' At line:21 char:1 + Send-MailMessage @smtpMessage Blockquote
param (
[string]$Path = "C:\Users\me\Desktop\ScanFolder",
$From = "me@msn.com",
$To = "you@msn.com",
$Subject1 = "Changes Found",
$Subject2 = "No Changes in last x minutes",
$Body = "anything",
$SMTPServer = "smtp.live.com",
$SMTPPort = "587",
[PSCredential]$Credential #pass in credential
)
$smtpMessage = @{
To = $To
From = $From
Subject = $Subject
Smtpserver = $SMTPClient
Credential = $Credential
BodyAsHtml = $true
}
Send-MailMessage @smtpMessage
$secpasswd = ConvertTo-SecureString "mypassword" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ("me@msn.com", $secpasswd)
解决方案
无论是其他电子邮件,您都可以在脚本中以纯文本形式输入您的凭据(就像您现在所做的那样),但这确实是一种不明智的方法,或者将它们存储在安全文件中(更好的选择)并根据需要调用它们.
整个网络和这个论坛上都有大量这种思维过程的例子。例如:
快速安全地存储您的凭据 – PowerShell
https://www.jaapbrasser.com/quickly-and-securely-storing-your-credentials-powershell
# To get a credential object we can either manually create one or use the Get-Credential cmdlet to prompt for the account details:
$Credential = Get-Credential
# To store the credentials into a .cred file:
$Credential | Export-CliXml -Path "${env:\userprofile}\Jaap.Cred"
# And to load the credentials from the file and back into a variable:
$Credential = Import-CliXml -Path "${env:\userprofile}\Jaap.Cred"
Invoke-Command -Computername 'Server01' -Credential $Credential {whoami}
以 JSON 格式存储 PowerShell 凭据
https://jdhitsolutions.com/blog/powershell/5396/storing-powershell-credentials-in-json
$secure = ConvertTo-SecureString -String 'P@$$w0rd' -AsPlainText -Force
$cred = New-Object -typename PSCredential -ArgumentList @('company\admin',$secure)
$cred | Export-clixml c:\work\admin.xml
在磁盘上安全地存储凭据
http://powershellcookbook.com/recipe/PukO/securely-store-credentials-on-disk
# The first step for storing a password on disk is usually a manual one. There is nothing mandatory about the filename, but we’ll use a convention to name the file CurrentScript.ps1.credential. Given a credential that you’ve stored in the $credential variable, you can safely use the Export-CliXml cmdlet to save the credential to disk. Replace CurrentScript with the name of the script that will be loading it:
PS > $credPath = Join-Path (Split-Path $profile)
# CurrentScript.ps1.credential
PS > $credential | Export-CliXml $credPath
# In PowerShell version 2, you must use the ConvertFrom-SecureString cmdlet:
PS > $credPath = Join-Path (Split-Path $profile) CurrentScript.ps1.credential
PS > $credential.Password | ConvertFrom-SecureString | Set-Content $credPath
这是一个常见问题,因此您的帖子请求可能被视为与以下内容重复:
推荐阅读
- python - Sanic 的异步(非阻塞)方法问题
- c++ - 我正在尝试 SDL_DisplayFormat 一个 .png 文件,我想,我可能缺少依赖项
- graphql - React Apollo - 多重突变
- terminal - 运行 'crontab *' 的结果是什么?
- asp.net - 将 sparql 结果列表到 asp.net 组件中
- javascript - 如何将参数传递给类扩展组件
- excel - .ReadyState & .Busy 不等待 IE 页面加载
- spring-mvc - 序列化 XML 时未使用 Jackson PropertyFilter
- azure - 增加在 Azure 上运行的 Dockerized ASP.NET Core 站点的最大上传大小限制?
- css - 如何用父母的背景图像填充孩子的文本?