Сбой PowerShell SMTPClient («Требуется аутентификация») в Windows 7;работает на Windows 10 - PullRequest
1 голос
/ 13 октября 2019

Следующий фрагмент скрипта PowerShell отлично работает в Windows 10 (PSv5.1) с последней версией .NET (4.8).

В Windows 7 (PSV2.0) происходит сбой с ответом сервера: «Требуется авторизация». Однако, если я заменим $ sendercreds.Password на фактический пароль в виде открытого текста, это сработает !!

$sendercreds = Get-Credential
$smtp = New-Object System.Net.Mail.SmtpClient
$to = New-Object System.Net.Mail.MailAddress("someone@somewhere.com")
$from = New-Object System.Net.Mail.MailAddress("sender@senderhost.com")
$msg = New-Object System.Net.Mail.MailMessage($from, $to)
$msg.subject = "Something I want to tell them"
$smtp.Host = "smtpserver.senderhost.com"
$smtp.EnableSsl = $True
$smtp.Port = 587
$smtp.Credentials = New-Object System.Net.NetworkCredential($sendercreds.UserName, $sendercreds.Password)
$smtp.Send($msg)

Я обновил Win7-машину .NET с 4.6.1 до 4.8: без радости ...

Похоже, что-то связано с поддержкой SecureString в PS2.0, но я не могу найти в сети ничего об этом после ЧАСОВ ударов головой !!

1 Ответ

1 голос
/ 14 октября 2019

После небольшого поиска я наконец-то нашел: https://www.pdq.com/blog/powershell-running-net-4-with-powershell-v2/. Оказывается, PSV2.0 не будет использовать последнюю версию .NET Framework, которую вы установили UNLESS, чтобы сообщить об этом в файле .config !!

Файлы конфигурации (XML) (powershell.exe.config и powershell_ise.exe.config) должны содержать следующее:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup>
      <supportedRuntime version="v4.0.30319" />
      <supportedRuntime version="v2.0.50727" />
    </startup>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...