使用 invoke-expression 传递 secureString 参数

时间:2021-01-31 08:05:27

标签: powershell

我想在另一个 ps1 文件中传递参数,但我无法发送参数

我的代码:

#loginWindow.ps1

 $userName=$var_txt_username.Text
   [SecureString] $password=ConvertTo-SecureString $var_txt_password.Password -AsPlainText -Force
   $myPath="$path\MainWindow.ps1"
   $window.Close()
   Invoke-Expression "$myPath $userName $password"

 #MainWindow.ps1
 param(
 [string]$userName ,
 [secureString]$password
 )

和我的错误:

无法处理参数“密码”的参数转换。无法将“System.String”类型的“System.Security.SecureString”值转换为“System.Security.SecureString”类型。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

这里的问题在于 Invoke-Expression,您应该始终尽量避免使用 cmdlet。见this

您可以通过点源来运行您的 MainWindow 脚本:

. $myPath $userName $password

或使用 call operator

& $myPath $userName $password
相关问题