2017-01-09 5 views
1

Я хочу, чтобы электронное письмо отправлялось более чем одному получателю, а также я не хочу запрашивать имя пользователя и пароль , Поэтому я использовал преобразование ниже строки, но затем я столкнулся с приведенным ниже сообщением об ошибке.New-Object: Невозможно найти перегрузку для «PSCredential» и количество аргументов: «2»

Не могли бы вы предложить свои ответы, чтобы исправить эту проблему?

[string] [ValidateNotNullOrEmpty()] $secpasswd = "Q$$777LV" 
$secpasswd = ConvertTo-SecureString -String "Q$$777LV" -AsPlainText -Force 
$mycreds = New-Object System.Management.Automation.PSCredential (“test”, $secpasswd) 

Сообщение об ошибке:

New-Object: Не удается найти перегрузку «PSCredential» и количество аргументов: «2»

ответ

3

Ваше первое заявление делает $secpasswd переменную тип [string]. Из-за этого объект SecureString, который вы создаете с помощью второго оператора, автоматически преобразуется в строку. Из-за этого два заявления

[string]$secpasswd = "something" 
$secpasswd = ConvertTo-SecureString -String "something" -AsPlainText -Force 

эффективно так же, как

$secpasswd = 'System.Security.SecureString' 

Поскольку PSCredential конструктор ожидает строку и SecureString объекта, а не две строки, он выдает ошибку вы наблюдали.

Чтобы устранить эту проблему, либо не заставить переменную типа [string]:

[ValidateNotNullOrEmpty()]$secpasswd = "something" 
$secpasswd = ConvertTo-SecureString -String $secpasswd -AsPlainText -Force 
$mycreds = New-Object Management.Automation.PSCredential ("test", $secpasswd) 

или использовать различные переменные для открытого текста и безопасной строки пароля:

[string][ValidateNotNullOrEmpty()]$passwd = "something" 
$secpasswd = ConvertTo-SecureString -String $passwd -AsPlainText -Force 
$mycreds = New-Object Management.Automation.PSCredential ("test", $secpasswd)