Объект Powershell $ Credential для предотвращения необходимости взаимодействия с пользователем - PullRequest
0 голосов
/ 20 ноября 2018

Hello StackOverflow !,

Я пытаюсь создать новый объект, который я тоже могу передать в un / pwd, чтобы мне не требовалось взаимодействия с пользователем при обращении к остальному API, с которым я работаю.

У Microsoft есть удобный пример (Пример 7), который можно найти по адресу: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/get-credential?view=powershell-6

Однако при использовании этого метода я получаю следующее:

    New-Object : Cannot find an overload for "PSCredential" and the argument 
    count: 
    "2".
    At line:17 char:15
    + ... redential = New-Object -TypeName 
    System.Management.Automation.PSCrede ...
    +                 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-Object], 
    MethodException
    + FullyQualifiedErrorId : 
    ConstructorInvokedThrowException,Microsoft.PowerShel 
    l.Commands.NewObjectCommand

    Invoke-RestMethod : A positional parameter cannot be found that accepts 
    argument 
    '$null'.
    At line:21 char:1
    + Invoke-RestMethod -Method Get -Uri $uri $Credential #-Credential $cre 
    ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-RestMethod], 
    ParameterB 
    indingException
    + FullyQualifiedErrorId : 
    PositionalParameterNotFound,Microsoft.PowerShell.Com 
    mands.InvokeRestMethodCommand

Просто чтобы вы могли проверить мой код, он в основном такой же, как пример Microsoft:

    $Uri = 'A url to a rest api'
    $User = "A Username"
    $PWD = "A Password"
    $Credential = New-Object -TypeName 
    System.Management.Automation.PSCredential -ArgumentList $User, $PWD 


    #Invokes rest get request to rabbitmq uri                            
    Invoke-RestMethod -Method Get -Uri $uri $Credential      

С полученной ошибкой я думаю, что я не передаю команду New-Object, что-то, что она ожидает?

Любая помощь приветствуется.

Спасибо,

J

1 Ответ

0 голосов
/ 20 ноября 2018

Вам нужно сделать из пароля SecureString, например:

$User = "A Username"
$PWD = ConvertTo-SecureString -String "A Password" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential($User,$PWD)

Invoke-RestMethod -Method Get -Uri $uri -Credential $Credential   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...