我正在Windows 8.1机器上编写PowerShell脚本.尝试使用New-Object cmdlet创建PSCredential对象时,出现此错误:
New-Object:找不到"PSCredential"的重载和参数count:"2".
在另一台Windows 8.1机器上运行完全相同的脚本对我来说很好.我还验证了两台机器都运行相同版本的PowerShell 4.0
两台计算机都安装了相同的.NET Framework 4.0.
知道为什么会这样,以及如何解决这个问题?
$userPassword = ConvertTo-SecureString -String "MyPassword" -AsPlainText -Force
$userCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "myUserName", $userPassword
Run Code Online (Sandbox Code Playgroud)
经过一些测试后,我发现了问题所在.对于我的功能,我打算从用户那里获取用户名和密码,但如果用户决定跳过这些输入参数,也会提供默认值.
为此我通过在参数部分添加以下行来实现它
[string][ValidateNotNullOrEmpty()] $userPassword = "myPassword",
Run Code Online (Sandbox Code Playgroud)
似乎问题是我在参数中将它定义为[String]但后来试图成为SecureString,这导致了问题.
删除参数中的[String]属性解决了问题.