如何使用Get-Credential将光标保留在用户名上?

时间:2017-03-13 16:51:57

标签: powershell passwords

运行$Cred = Get-Credential 'MyDomain.com\'时,它会自动将光标移动到密码输入。 (见下图)

Powershell Credential Prompt: Cursor on password input

如何使用已通过脚本提供的域显示它,但将光标仍保留在用户名输入上,如下所示:

Powershell Credential Prompt: Cursor on user name input

这主要是为了方便在运行所述脚本期间减少点击次数。这样我就可以提供域名或只是机器名来指定本地主机,所有用户必须输入的是用户帐户名。我希望他们不必再点击用户名输入。

2 个答案:

答案 0 :(得分:0)

基本上没有办法直接处理它,所以你有一些选择(大多数都有点hacky)。

第一个选项,不要指定用户名。这使它留空,光标从那里开始。然而,这依赖于用户进入他们所连接的域,如果他们不这样做,您将需要错误捕获它或从凭证中提取详细信息并创建具有正确域的新域(如果已知)。

接下来,您可以在加载凭据提示后通过sendkeys发送Shift + Tab。这有点棘手,因为它涉及用计时器启动作业,然后启动凭据提示并希望它们排队。希望你有快速的机器。

start-job {
    Add-Type -AssemblyName System.Windows.Forms
    start-sleep -m 100
    [system.windows.forms.sendkeys]::sendwait("+({TAB})")
    [system.windows.forms.sendkeys]::sendwait("{RIGHT}")
}
$Cred = Get-Credential 'MyDomain.com\'

最后,您可以选择在Winforms中编写自己的对话框,或者只是在控制台中处理它(如果显示)。这是一个非常开放的行动方案,有数以千计的答案,所以最好自己研究。

答案 1 :(得分:0)

您还可以利用Get-Credential的{​​{1}}参数传递具有预期格式的邮件。类似“请输入格式为'DOMAIN \ USERNAME'的凭据。”

例如:

$Cred = Get-Credential -Message "Please enter your credentials in format 'DOMAIN\USERNAME'."