Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何使用Get Credential将光标保持在用户名上?_Powershell_Passwords - Fatal编程技术网

Powershell 如何使用Get Credential将光标保持在用户名上?

Powershell 如何使用Get Credential将光标保持在用户名上?,powershell,passwords,Powershell,Passwords,运行$Cred=Get Credential'MyDomain.com\'时,它会自动将光标移动到密码输入。(见下图) 如何在已通过脚本提供的域中显示它,但光标仍在用户名输入上,如下所示: 这主要是为了方便在运行所述脚本期间减少点击。这样,我可以提供域名或只是机器名来指定本地主机,用户只需输入用户帐户名。我希望他们不必点击返回用户名输入。基本上没有直接处理的方法,因此您有一些选项(大多数选项有点粗糙) 第一个选项,不要指定用户名。这将使其留空,光标从那里开始。然而,这取决于进入他们所连接的域

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

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


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

基本上没有直接处理的方法,因此您有一些选项(大多数选项有点粗糙)

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

接下来,您可以在加载凭证提示后通过sendkeys发送Shift+选项卡。这有点棘手,因为它需要使用计时器启动作业,然后启动凭证提示符并希望他们排队。希望你有速度快的机器

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中编写自己的对话,或者在控制台中处理对话(如果显示)。这是一个非常开放的行动过程,有数千个答案,因此最好自己研究。

您还可以利用
获取凭证
-Message
参数以预期格式传递消息。类似于“请以“域\用户名”格式输入您的凭据。”

例如:

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

我认为这不可能通过
获取凭证
。但是,您可以使用
Read Host
Read Host-AsSecureString
生成两个不同的提示,并使用这些输入创建
PSCredential
对象。感谢您的回复。从未想过尝试将Shit+选项卡发送到凭证提示符。我会采取那种解决办法。现在我需要弄清楚如何抓取Get凭证的句柄。