检查PowerShell SecureString是否具有值

检查PowerShell SecureString是否具有值,powershell,Powershell,我希望验证存储为SecureString的用户输入的密码是否为空 目前我正在检查长度(即,if($password.length-eq 0){#再次提示}),这似乎有效。如果这是“正确”的方法,那就太好了。否则我想知道我该怎么做 我是PowerShell的新手,因此非常感谢您的指导。提前感谢。您可以通过将密码转换为PsCredential对象来访问密码以检查内容 创建一个SecureString(仅用于此演示-听起来您已经有了): 转换为PsCredential对象(用户名的值与此无关): 找回

我希望验证存储为
SecureString
的用户输入的密码是否为空

目前我正在检查长度(即,
if($password.length-eq 0){#再次提示}
),这似乎有效。如果这是“正确”的方法,那就太好了。否则我想知道我该怎么做


我是PowerShell的新手,因此非常感谢您的指导。提前感谢。

您可以通过将密码转换为
PsCredential
对象来访问密码以检查内容

创建一个SecureString(仅用于此演示-听起来您已经有了):

转换为
PsCredential
对象(用户名的值与此无关):

找回密码:

$cleartextPassword = $creds.GetNetworkCredential().Password
检查是否为空:

if ([string]::IsNullOrWhiteSpace($cleartextPassword)) 
{ 
    # prompt again
}

您可以通过将密码转换为
PsCredential
对象来访问密码以检查内容

创建一个SecureString(仅用于此演示-听起来您已经有了):

转换为
PsCredential
对象(用户名的值与此无关):

找回密码:

$cleartextPassword = $creds.GetNetworkCredential().Password
检查是否为空:

if ([string]::IsNullOrWhiteSpace($cleartextPassword)) 
{ 
    # prompt again
}

感谢@boxdog的快速响应。我可以试试。就我自己的教育而言,你能想出一个为什么检查长度是一个坏主意的原因吗?我认为你的方法将与标准的SecureString生成技术(例如,
读取主机
)一起工作,因为我看不到任何方法来传递可能导致问题的“奇怪”字符。但是,我不确定是否有一种方法可以让这样的字符串具有定义的长度,但基本上不能用作密码。在任何情况下,上述技术都非常有用,因为您还可以对明文密码应用其他测试,例如,强制执行密码规则。感谢@boxdog的快速响应。我可以试试。就我自己的教育而言,你能想出一个为什么检查长度是一个坏主意的原因吗?我认为你的方法将与标准的SecureString生成技术(例如,
读取主机
)一起工作,因为我看不到任何方法来传递可能导致问题的“奇怪”字符。但是,我不确定是否有一种方法可以让这样的字符串具有定义的长度,但基本上不能用作密码。在任何情况下,上述技术都非常有用,因为您还可以对明文密码应用其他测试,例如,强制执行密码规则。