目前,有两个域,我们的用户将在其中一个或两个域中存在机器。我正在编写一个 powershell 脚本,在其中收集用户名和机器名。我认为通过 ping $computer.domain.com 执行测试连接以确定机器所在的域,然后如果 ping $computer.otherdomain.com 失败。
一旦我确定了域,我就使用用户名并放置“domain\”+ $username 来预填域名。我通过执行以下操作对提供和存储的 $machinename 执行相同操作:$machinename + ".domain.com"。
我不想存储用户的密码
我一直在尝试使用 cmdkey 将用户名与机器相关联并调用 mstsc(参见下面的示例):
cmdkey /generic:TERMSRV/$computername /user:"username" mstsc /v:$computername
但是,当我运行它时,我会遇到不理想的登录尝试失败。
我考虑过在 mstsc /v:$computername 之后尝试使用 /prompt 字段,所以: mstsc /v:$computername /prompt
但这不会使用存储的用户名,而是使用我当前正在运行命令的用户配置文件。
我只是想让我的脚本获取用户的用户名和机器名,测试并确认机器在后轮驻留的域,然后用域预填充用户名,并提示用户输入密码以继续。
对此的任何建议将不胜感激!
这是我正在处理的代码:******
#Storing the provided username within variable $Username
$UserName = $UsernameTextbox.Text
Write-host "Username entered =" $UserName
#Storing the user's provided comuter name into $Machinename
$MachineName = $HostnameTextbox.Text
Write-host "Machinename entered =" $MachineName
#Deletes any previously stored cmdkeys that may interfere with the
cmdkey /list | ForEach-Object{if($_ -like "*Target:*"){cmdkey /del:($_ -
replace " ","" -replace "Target:","")}}
if (Test-Connection -ComputerName "$MachineName.domain.com" -Quiet ) {
$User = "domain\" + $UserName
$MachineName = $MachineName + ".domain.com"
Write-Host "Computer responded in domain"
}
else {
$User = "domain2\" + $UserName
$MachineName = $MachineName + ".domain2.com"
Write-Host "Computer is most likely in domain2"
}
cmdkey /add:$MachineName /user:$user
Write-host "Username with discovered domain name =" $User
Write-host "machine name after domain check =" $MachineName
$argumentslist = "/v:$MachineName " #took out /prompt
Start-Process -FilePath C:\Windows\System32\mstsc.exe -ArgumentList
"$argumentslist"