У меня есть функция, которая вызывает командлет,не передать SecureString моего командлету
Function connect-app([string]$host, [string]$user, [SecureString]$password, [switch]$passwordfile, [switch][alias("q")]$quiet)
Внутри этой функции, я получил чек на если $passwordfile
или $password
предоставляется
if (-Not $passwordfile -and ($password -eq $null -or $password -eq ""))
{
# prompt for a password
[SecureString]$passwordenc = Read-Host -AsSecureString "Password";
}
else
{
$hash = Hash($host + "-" + $user);
[SecureString]$passwordenc = Get-Content "$env:USERPROFILE\$hash" | ConvertTo-SecureString;
}
в конечном счете, если $quiet
подается, то изменение ниже командлета называется
$expression = "Connect-Appliance -host " + $host + " -user " + $user + " -Password " + $passwordenc + " -Quiet";
Invoke-Express $expression
Но по какой-то причине, я продолжаю работает в этом вопросе
Connect-Appliance: Невозможно привязать параметр 'Password'. Невозможно преобразовать значение «System.Security.SecureString» типа «System.String» в типа «System.Security.SecureString». В строке: 1 char: 69 + Connect-Appliance -host 172.25.2.110 -user admin -Password System.Secur ... + ~~~~~~~~~~~~ + Категория: InvalidArgument: (:) [Connect-Appliance], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage, CPowerCLI.ConnectAppliance
И я не могу понять, почему. Сначала я думал, это потому, что я предоставляю строку, но переменная объявляется как SecureString.
Возможно ли это?
Что я могу сделать, это
$password = Read-Host -AsSecureString "Pass"
Connect-Appliance -host 172.25.2.110 -user admin -password $password -quiet
И это, кажется, работает нормально. Но когда я вызываю это из файла psm1, он не работает с ошибкой выше.
благодаря