Проблемы с электронной почтой в SMTP-скрипте - PullRequest
0 голосов
/ 09 июня 2018

1) Как я могу сохранить свои учетные данные в этом сценарии - он запрашивает у меня учетные данные

2) Должны ли последние две строки быть внизу или перед параметрами?Я получаю эту ошибку - я думаю, что неправильно передаю свои учетные данные

Send-MailMessage: Не удалось разрешить удаленное имя: 'System.Net.Mail.SmtpClient' В строке: 21 символ: 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)

1 Ответ

0 голосов
/ 09 июня 2018

Независимо от адреса электронной почты, вы можете либо ввести свои кредиты в виде простого текста в сценарии (как вы делаете сейчас) , , но на самом деле опрометчивый подход или сохраните их в защищенном файле (лучший вариант) и вызывайте их по мере необходимости.

Существует множество примеров этого мыслительного процесса в Интернете и на этом форуме.Например:

Быстрое и безопасное хранение учетных данных - 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}

Хранение учетных данных PowerShell в JSON

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

Иэто общий вопрос, и поэтому ваш почтовый запрос может рассматриваться как дубликат:

Использование учетных данных PowerShell без запроса пароля

Как передать учетные данные команде Send-MailMessage для отправки электронных писем

...