如何预填RDP用户名&在powershell

时间:2018-01-16 20:29:41

标签: powershell rdp mstsc

目前,我们的用户将拥有两个或两个域中的计算机。我正在写一个powershell脚本,我在其中收集用户名和机器名。我想通过ping $ computer.domain.com来执行测试连接来确定机器所在的域,然后ping ping computer.otherdo.com.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"

0 个答案:

没有答案