Powershell make-функция из рабочего кода - PullRequest
0 голосов
/ 04 февраля 2019

Нужен ваш совет, как переставить часть скрипта в функцию, чтобы вызвать ее в скрипте, собрать новые учетные данные.

Вот скрипт:

$vault="3.3.3.3:8500"   
#  Check Vault login for Tech profile
#  Input Login & password
$pair = (Get-Credential)
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{Authorization = $basicAuthValue}
$rawcontent=(Invoke-WebRequest -Uri $vault -Headers $Headers).StatusCode

МожетКто-нибудь даст мне пример, как собрать эту часть кода в функцию, чтобы вызвать ее в раздел if / elseif в случае неправильного ввода учетных данных?

if ( $rawcontent -contains '200' ) { Write-Host "Technician is authenticated!" }
[ elseif ( $rawcontent -contains '400' ) {Write-Host "Bad credentials!" | # call Ask-Creds function to re-enter creds } ]
[ elseif ( $rawcontent -contains '000' ) {Write-Host "Connection failed!" | Exit 1 } ]

UPD1 - приведенный выше код работает.Я попытался собрать некоторую функцию, основанную на приведенном выше коде, но она не возвращает никакого значения переменной $ rawcontent.Может кто-нибудь дать мне подсказку, что я не так делаю:

function Ask-Creds {
    param(
        $Credential = (Get-credential -message 'Please enter  Technician`s login & password for Terminal registration:')        
    )
    $vault="3.3.3.3:8500" 
    $encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Credential))
    $basicAuthValue = "Basic $encodedCreds" 
    $Headers = @{Authorization = $basicAuthValue}
    $rawcontent=(Invoke-WebRequest -Uri $vault -Headers $Headers).StatusCode
}

Ask-Creds

echo $rawcontent #returns nothing

1 Ответ

0 голосов
/ 04 февраля 2019

На основе ответа @boxdog я смог собрать исправленную функцию:

function Ask-Creds {
    param(
        [ValidateNotNull()]
        $Credential = (Get-credential -message 'Please enter  Technician`s login & password for Terminal registration:')        
    )
    $vault="3.3.3.3:8500" 
    $encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Credential))   
    $basicAuthValue = "Basic $encodedCreds" 
    $Headers = @{Authorization = $basicAuthValue}
    $rawcontent=(Invoke-WebRequest -Uri $vault -Headers $Headers).StatusCode
    echo "$rawcontent"
}

Ask-Creds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...