我有它調用cmdlet的我似乎無法爲SecureString的傳遞給我的cmdlet的
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
但由於某些原因,我一直運行到這個問題
連接家電:無法綁定參數「密碼」。無法將 類型爲「System.String」的「System.Security.SecureString」值轉換爲 類型「System.Security.SecureString」。在線:1 char:69 + Connect-Appliance -host 172.25.2.110 -user admin -Password System.Secur ... + ~~~~~~~~~~~~ + CategoryInfo:InvalidArgument:(: )[連接家電],ParameterBindingException + FullyQualifiedErrorId:CannotConvertArgumentNoMessage,CPowerCLI.ConnectAppliance
而且我想不通爲什麼。起初,我認爲這是因爲我提供了一個字符串,但該變量被聲明爲SecureString。
可以做到這一點嗎?
什麼我能做的就是
$password = Read-Host -AsSecureString "Pass"
Connect-Appliance -host 172.25.2.110 -user admin -password $password -quiet
這似乎工作得很好。但是當我從psm1文件中調用它時,它不適用於上面的錯誤。
感謝