У меня есть следующая функция PS:
function Ask-Creds {
param(
[ValidateNotNull()]
$Creds = (Get-credential -message 'Please enter Technician`s login & password for Terminal registration:')
)
$vault="http://1.1.1.1:8200"
#Here I store error message in $State variable inside function:
$rawcontent=(New-VltAuth -va $vault -AuthMethod userpass -PathData $creds.Username -AuthData @{ password = $creds.GetNetworkCredential().Password } -KeepSecretWrapper -verbose -ErrorVariable State)
#here I make $State variable global, to access its value outside function
$global:State
}
Проблема в том, что когда я делаю echo $ State, я получаю правильное значение:
PS C:\Users\vasyl.v> echo "$State"
400 BadRequest. {"errors":["invalid username or password"]}
Но когда я пытаюсь использоватьэта переменная позже:
if ( $state.contains("") ) {
echo "Technician is authenticated!"
} elseif ( $state.startswith("400 BadRequest") ) {
echo "Bad credentials!" | Ask-Creds
} elseif ( $state.startswith("An error occurred while") ) {
echo "Connection failed!" | exit 1
}
Я получаю:
Method invocation failed because [System.Management.Automation.ErrorRecord] does not contain a method named 'contains'.
At line:1 char:6
+ if ( $state.contains("") ) {
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Любой может подсказать мне, как избавиться от "[System.Management.Automation.ErrorRecord]" и получить значение какв эхо?