Студент, автоматизация электронной почты администратору при создании нового пользователя powershell - PullRequest
0 голосов
/ 28 мая 2020

пытается отправить электронное письмо при создании нового пользователя админу. Кажется, что это сработало в первый раз, но затем не удалось запустить второй раз. Я думаю, что проблема заключается в том, что я создаю новый объект во второй раз, но я не знаком с PScredential, и как вызвать его во второй раз вместо того, чтобы создавать его снова, я предполагаю, что это будет некоторая форма оператора if, но я не знаю, что вызывать в if.

вот мой код

$password = ConvertTo-SecureString “Password” -AsPlainText -Force

$Cred = New-Object System.Management.Automation.PSCredential('38da1ca9daf082',"$password")

Send-MailMessage -SmtpServer 'smtp.mailtrap.io' -Credential $cred -UseSsl -From 'server@gmail.com' -To 'admin@gmail.com' -Subject 'TEST'


и это сообщение об ошибке

New-Object : Cannot find an overload for "PSCredential" and the argument count: "2".
At line:3 char:9
+ $Cred = New-Object System.Management.Automation.PSCredential('38da1ca ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

1 Ответ

1 голос
/ 28 мая 2020

Итак, давайте посмотрим документацию https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.pscredential?view=pscore-6.2.0

Мы видим, что есть 2 конструктора

PSCredential(PSObject)

или

PSCredential(String, SecureString)

Это выглядит так, как в примере сообщения PSCredential(String, SecureString) пытался использовать.

В примере

$password = ConvertTo-SecureString “Password” -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('38da1ca9daf082',"$password")

Поскольку "$Password" был заключен в кавычки, он превратил SecureString в обычный String.

Исправление заключается в удалении кавычек "

Вот рабочая копия

$password = ConvertTo-SecureString “Password” -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('38da1ca9daf082',$password)
Send-MailMessage -SmtpServer 'smtp.mailtrap.io' -Credential $cred -UseSsl -From 'server@gmail.com' -To 'admin@gmail.com' -Subject 'TEST'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...