我正在使用powershell脚本执行
param([string]$Server,[string]$locusername,[string]$locpassword)
$password = '$locpassword' | ConvertTo-SecureString -asPlainText -Force
$username = $locusername
$cred = New-Object System.Management.Automation.PSCredential($username,$password)
我收到错误
无法将参数绑定到参数' String'因为它是null。 + CategoryInfo:InvalidData:(:) [ConvertTo-SecureString],ParameterBindingValidationException + FullyQualifiedErrorId:ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand
答案 0 :(得分:1)
正如@Swonkie在评论中已经提到的那样
无需引用参数。只需使用提供的参数即可。
param([String]$Server, [String]$locusername, [String]$locpassword)
process {
#NOTE: no quotes on parameter $locpassword
$secure_password = ConvertTo-SecureString -String $locpassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($locusername, $secure_password)
#...other code
}
如果您仍然收到该错误,请查看$locpassword
中存储的值,因为它可能已被分配$null
值。
答案 1 :(得分:0)
更改此行
$password = '$locpassword' | ConvertTo-SecureString -asPlainText -Force
用这个:
$password = ($locpassword | ConvertTo-SecureString -asPlainText -Force)
答案 2 :(得分:0)
这将起作用
$password = ConvertTo-SecureString -String "******" -AsPlainText
答案 3 :(得分:-1)
而不是使用单引号使用双引号,用于字符串扩展
$password = "$locpassword" | ConvertTo-SecureString -asPlainText -Force
完整代码:
param([string]$Server,[string]$locusername,[string]$locpassword)
$password = "$locpassword" | ConvertTo-SecureString -asPlainText -Force
$username = $locusername
$cred = New-Object System.Management.Automation.PSCredential($username,$password)
答案 4 :(得分:-1)