RDP 到具有特定用户名的服务器
RDP into server with specific username
我需要能够调用 exe 并仅指定服务器名和用户名。我仍然希望它像往常一样提示输入密码。当我调用下面的第一个命令时,RDP 会提示我输入密码,但它已经插入了我的本地用户名。如果我想使用其他人的用户名,我无法在第二个命令中使其正常工作。
Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "/v:$server"
Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "/v:$server/IP:$username"
如何只传入服务器名和用户名?
mstsc.exe
没有 /username
参数。但是,它确实有一个 /prompt
参数,它会提示输入用户名和密码。否则,您需要使用 .rdp
连接文件。
更新:
您可以利用 cmdkey
预加载凭据,这样当您远程访问主机时 mstsc
不会提示您,然后使用 Read-Host
或 [=19= 等内置功能提示您输入凭据] 你自己。
示例函数:
function Connect-Host
{
param
(
[Parameter(Position = 0, Mandatory)]
[ValidateScript({Test-Connection -ComputerName $PSItem -Quiet})]
[string]
$ComputerName,
[Parameter(Position = 1)]
[System.Management.Automation.CredentialAttribute()]
[pscredential]
$Credential = (Get-Credential)
)
$cmdKeyArgs = @(
"/generic:TERMSRV/$ComputerName"
"/user:$($Credential.UserName)"
"/pass:$($Credential.GetNetworkCredential().Password)"
)
$null = & "$Env:SystemRoot\System32\CMDKEY.exe" @cmdKeyArgs
& "$Env:SystemRoot\System32\MSTSC.exe" /v:$ComputerName
}
可以对其进行修改,因此它不会在您每次 运行 时提示您,因为它将使用 cmdkey
缓存您的凭据。在 prompting/saving.
之前,可以使用其他逻辑来查询 cmdkey
您要连接的计算机
示例:
cmdkey /list |
Select-String -Pattern $ComputerName -Context 2 |
Select-Object -Property @(
@{N='ComputerName';E={$ComputerName}}
@{N='User';E={$PSItem.Context.PostContext[-1] -replace '\s*User:\s*'}}
)
我需要能够调用 exe 并仅指定服务器名和用户名。我仍然希望它像往常一样提示输入密码。当我调用下面的第一个命令时,RDP 会提示我输入密码,但它已经插入了我的本地用户名。如果我想使用其他人的用户名,我无法在第二个命令中使其正常工作。
Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "/v:$server"
Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "/v:$server/IP:$username"
如何只传入服务器名和用户名?
mstsc.exe
没有 /username
参数。但是,它确实有一个 /prompt
参数,它会提示输入用户名和密码。否则,您需要使用 .rdp
连接文件。
更新:
您可以利用 cmdkey
预加载凭据,这样当您远程访问主机时 mstsc
不会提示您,然后使用 Read-Host
或 [=19= 等内置功能提示您输入凭据] 你自己。
示例函数:
function Connect-Host
{
param
(
[Parameter(Position = 0, Mandatory)]
[ValidateScript({Test-Connection -ComputerName $PSItem -Quiet})]
[string]
$ComputerName,
[Parameter(Position = 1)]
[System.Management.Automation.CredentialAttribute()]
[pscredential]
$Credential = (Get-Credential)
)
$cmdKeyArgs = @(
"/generic:TERMSRV/$ComputerName"
"/user:$($Credential.UserName)"
"/pass:$($Credential.GetNetworkCredential().Password)"
)
$null = & "$Env:SystemRoot\System32\CMDKEY.exe" @cmdKeyArgs
& "$Env:SystemRoot\System32\MSTSC.exe" /v:$ComputerName
}
可以对其进行修改,因此它不会在您每次 运行 时提示您,因为它将使用 cmdkey
缓存您的凭据。在 prompting/saving.
cmdkey
您要连接的计算机
示例:
cmdkey /list |
Select-String -Pattern $ComputerName -Context 2 |
Select-Object -Property @(
@{N='ComputerName';E={$ComputerName}}
@{N='User';E={$PSItem.Context.PostContext[-1] -replace '\s*User:\s*'}}
)