Powershell 使用空用户名创建PSCredential
我需要创建一个用户名为空的PSCredentialPowershell 使用空用户名创建PSCredential,powershell,Powershell,我需要创建一个用户名为空的PSCredential $Password = ConvertTo-SecureString -AsPlainText -Force -String 'a' $Credential = New-Object -TypeName PSCredential -ArgumentList '', $Password 当我运行上面的代码时,我得到一个异常 新对象:使用“2”参数调用“.ctor”时发生异常:“无法处理参数,因为参数的值 “用户名”无效。请更改“用户名”参数的值
$Password = ConvertTo-SecureString -AsPlainText -Force -String 'a'
$Credential = New-Object -TypeName PSCredential -ArgumentList '', $Password
当我运行上面的代码时,我得到一个异常
新对象:使用“2”参数调用“.ctor”时发生异常:“无法处理参数,因为参数的值
“用户名”无效。请更改“用户名”参数的值,然后再次运行该操作
如何创建用户名为空且只有密码的PSCredential?正如您所发现的(以及问题注释中的注释),您不能直接向用户提供空用户名(空字符串或$null
)
您可以通过以下方法解决该问题:使用UserName
和Password
properties(PSv3+)传递自定义对象([pscustomobject]
实例):
注意[0]
应用于ConvertTo SecureString
调用的结果,这是将输出对象正确识别为[SecureString]
([System.Security.SecureString]
)实例所必需的(如问题中所述,如果使用中间变量,则不需要此技巧)。我不太清楚为什么这是必要的;在这里,输出可能默认被视为一个集合;如果您明确知道,一定要告诉我们。注意事项:
- 鉴于两个构造函数表单设置了相同的数据字段,使用基于对象的构造函数设置空用户名的功能可能是一个bug,将来可能会得到修复-我不知道预期的行为是什么
- 我不清楚生成的凭证对象是否按预期工作。
例如,
在缺少用户名时失败$Credential.GetNetworkCredential()
$Password = ConvertTo-SecureString -AsPlainText -Force -String 'a'
$Credential = New-Object -TypeName PSCredential -ArgumentList '', $Password
创建
PSCredential
对象时必须提供用户名。您可以为用户名提供一个空格,但$null
或空字符串无效。我有点好奇,为什么您需要用户名为空的凭据?