Я пишу PowerShell script на машине Windows 8.1. При попытке создать объект PSCredential с помощью командлета New-Object мне была представлена эта ошибка:
Новый объект: не удается найти перегрузку для "PSCredential" и количество аргументов: "2".
Запуск точно такой же script на другой машине Windows 8.1 отлично подходит для меня. Я также подтвердил, что обе машины работают с той же версией PowerShell 4.0
Обе машины имеют одну и ту же платформу .NET Framework 4.0.
Любая идея, почему это происходит и как я могу решить эту проблему?
$userPassword = ConvertTo-SecureString -String "MyPassword" -AsPlainText -Force
$userCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "myUserName", $userPassword
После еще нескольких тестов я выяснил эту проблему. Для моей функции я намеревался взять имя пользователя и пароль от пользователя, но также предоставить значения по умолчанию, если пользователь решил пропустить эти входные параметры.
Для этого я достиг этого, добавив следующую строку в раздел параметров
[string][ValidateNotNullOrEmpty()] $userPassword = "myPassword",
Кажется, проблема в том, что я определил ее как [String] в параметре, но позже попытался быть SecureString, что привело к этой проблеме.
Удаление атрибута [String] в моем параметре решило проблему.